【发布时间】:2015-02-10 16:37:28
【问题描述】:
我有一个应用程序在 8081 端口上监听,Nginx 在 8080 端口上运行。代理传递语句如下所示:
$ cat /var/etc/opt/lj/output/services/abc.servicemanager.conf
location /api/abc.servicemanager/1.0 { proxy_pass http://localhost:8081;}
在nginx.conf 中,我将此文件包含为:
include /etc/nginx/conf.d/services/*.conf;
/etc/nginx/conf.d/service 是一个符号链接:
# ll /etc/nginx/conf.d/
lrwxrwxrwx. 1 root root 39 Dec 10 00:19 services -> ../../../var/etc/opt/lj/output/services
这是一个支持 CentOS 7.0 SELinux 的系统。如果我 setenforce 0 并使其允许,我看不到任何问题。所以文件在正确的位置,路径没有问题。如果 SELinux 正在执行,我会在审核日志中看到以下内容:
type=AVC msg=audit(1418348761.372:100930): avc: denied { getattr } for pid=3936 comm="nginx" path="/var/etc/opt/lj/output/services/abc.servicemanager.conf" dev="xvda1" ino=11063393 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:var_t:s0 tclass=file
我想知道如何在不禁用 SELinux 的情况下启用 Nginx 来查找 conf 文件。
【问题讨论】:
标签: nginx reverse-proxy selinux