¿Hay alguna manera de tener el registro del proceso maestro en STDOUT STDERR en lugar de en un archivo?
Parece que solo puede pasar una ruta de archivo a la directiva access_log:
access_log /var/log/nginx/access.log
Y lo mismo ocurre con error_log:
error_log /var/log/nginx/error.log
Entiendo que esto simplemente puede no ser una característica de nginx, me interesaría una solución concisa que use cola, por ejemplo. Sin embargo, es preferible que provenga del proceso maestro porque estoy ejecutando nginx en primer plano.
Respuestas:
Editar: parece que nginx ahora es compatible
error_log stderr;
como se menciona en la respuesta de Anon .Puede enviar los registros a
/dev/stdout
. Ennginx.conf
:editar: puede que tenga que ejecutar ln -sf / proc / self / fd / dev / si usa ejecutar ciertos contenedores de acopladores, luego use
/dev/fd/1
o/dev/fd/2
fuente
ENXIO
cuando stdout está abierto a un socket en lugar de a un archivo. Hay un ticket de kernel ascendente que indica que esto es deliberado y por intención: bugzilla.kernel.org/show_bug.cgi?id=1360 , por lo tanto, aunque esta respuesta es suficiente en algunos casos, no cubre completamente el rango de posibles fallasstderr
Si la pregunta está relacionada con la ventana acoplable ... las imágenes oficiales de la ventana acoplable nginx hacen esto haciendo enlaces suaves hacia stdout / stderr
RUN ln -sf /dev/stdout /var/log/nginx/access.log && ln -sf /dev/stderr /var/log/nginx/error.log
REF: https://microbadger.com/images/nginx
fuente
FROM nginx:alpine RUN ln -sf /dev/stdout /var/log/nginx/access.log \ && ln -sf /dev/stderr /var/log/nginx/error.log CMD ["nginx-debug", "-g", "daemon off;"]
http://nginx.org/en/docs/ngx_core_module.html#error_log
No use:
/dev/stderr
esto interrumpirá su configuración si va a usar systemd-nspawn.fuente
Cuando ejecute Nginx en un contenedor Docker, tenga en cuenta que un volumen montado sobre el directorio de registro anula el propósito de crear un enlace suave entre los archivos de registro y stdout / stderr en su Dockerfile, como se describe en la respuesta de @Boeboe .
En ese caso, puede crear el enlace suave en su punto de entrada (ejecutado después de que se montan los volúmenes) o no usar un volumen (por ejemplo, cuando un sistema de registro central ya ha recopilado los registros).
fuente
En la imagen de Docker de PHP-FPM, he visto ese enfoque:
fuente
Para un propósito de depuración:
Para un propósito clásico
Exigir
Debajo del soporte del servidor en el archivo de configuración
fuente