error de socket de dominio nginx unix

18

Uso fedora 17, y cuando configuro nginx con uwsgi usando un socket de dominio Unix, cuando coloco el socket en un directorio con el permiso adecuado, está bien, pero cuando coloco el socket en el /tmpcausará un error nginx:

connect() to unix:/tmp/MySite.sock failed (2: No such file or directory) while connecting to upstream

El archivo existe y tiene permiso de lectura / escritura para el usuario nginx. Pero lo que causa este error, realmente me vuelve loco, alguien puede resolverlo.

jeffgoku
fuente

Respuestas:

33

No puede colocar sockets destinados a la comunicación entre procesos /tmp.

Por razones de seguridad, las versiones recientes de Fedora usan directorios temporales con espacios de nombres , lo que significa que cada servicio ve un /tmparchivo completamente diferente y solo puede ver sus propios archivos en ese directorio.

Para resolver el problema, coloque el socket en un directorio diferente, como /run(anteriormente conocido como /var/run).

Michael Hampton
fuente
1
Sin embargo
hostmaster
1
/runno se puede escribir directamente, pero puede indicarle a systemd que cree un directorio debajo del cual sea escribible por ambos procesos.
Michael Hampton
Para ayudar a aquellos que buscan, esto también se aplica a centos 7, y mover la carpeta del socket a / run trabajado. No es fácil encontrar este problema, porque cada cuenta puede ver la carpeta y el archivo en tmp (configure 777 para probar), por lo que nunca adivinaría que los procesos no podrían.
JosephK
0

¡SI! ESTO AYUDÓ!

Estaba viendo mensajes de check-startup-logs de uwsgi, pero no tenía datos en los logs de inicio, no pude averiguar qué estaba sucediendo. Resultó que necesitaba cambiar el archivo de calcetines a una ubicación que no sea / tmp y agregar:

excepciones de captura = verdadero

al archivo ini de wsgi. Resultó que había especificado la ubicación del controlador de archivos de registro en un directorio inexistente, por lo que no podía registrar los errores en primer lugar.

Kevin J. Rice
fuente