Eu tive um problema semelhante com permissões e foi resultado do SELinux não ter a política para o nginx gravar em sockets
Você pode verificar as mensagens do SELinux AVC via audit2why -al
para ver mais detalhes do erro, algo como
type=AVC msg=audit(1414460265.454:2612): avc: denied { connectto } for pid=22107 comm="nginx" path="/tmp/uwsgi.sock" scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tclass=unix_stream_socket
Was caused by:
Missing type enforcement (TE) allow rule.
You can use audit2allow to generate a loadable module to allow this access.
Para adicionar a política de imposição do nginx, primeiro confirme a política de imposição executando
> grep nginx /var/log/audit/audit.log | audit2allow -m nginx
Você deve ver uma saída semelhante a
module nginx 1.0;
require {
type unconfined_t;
type httpd_t;
type home_root_t;
type soundd_port_t;
class sock_file write;
class unix_stream_socket connectto;
class tcp_socket name_connect;
}
#============= httpd_t ==============
#!!!! This avc is allowed in the current policy
allow httpd_t home_root_t:sock_file write;
#!!!! This avc is allowed in the current policy
allow httpd_t soundd_port_t:tcp_socket name_connect;
allow httpd_t unconfined_t:unix_stream_socket connectto;
Por fim, você carrega a política personalizada executando
> grep nginx /var/log/audit/audit.log | audit2allow -M nginx
> semodule -i nginx.pp