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.

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).


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.