我的应用程序正在监听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
这是一个启用了SELinux的CentOS 7.0系统。如果我执行setenforce 0
,并将其设置为Permissive模式,那么我不会看到任何问题。因此该文件处于正确的位置,路径没有问题。如果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
我想知道如何使Nginx在不禁用SELinux的情况下找到配置文件。
... { getattr } .. path="......."...
。如果我错了,请纠正我。 - Ayman Nedjmeddine