proxy_pass não está funcionando quando o SELinux está ativado, por quê?
Estou tendo um aplicativo escutando na porta 8081 e Nginx em execução na porta 8080. A declaração de passagem do proxy se parece com:
$ cat /var/etc/opt/lj/output/services/abc.servicemanager.conf
location /api/abc.servicemanager/1.0 { proxy_pass http://localhost:8081;}
Nonginx.conf
, Eu incluo este arquivo como:
include /etc/nginx/conf.d/services/*.conf;
o/etc/nginx/conf.d/service
é um link simbólico:
# ll /etc/nginx/conf.d/
lrwxrwxrwx. 1 root root 39 Dec 10 00:19 services -> ../../../var/etc/opt/lj/output/services
Este é um sistema ativado para SELinux do CentOS 7.0. Se eusetenforce 0
e torne-o permissivo, não vejo nenhum problema. Portanto, o arquivo está no lugar certo e sem problemas com os caminhos. Se o SELinux estiver em vigor, vejo o seguinte no log de auditoria:
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
Quero saber como habilitar o Nginx para encontrar o arquivo conf sem precisar desativar o SELinux.