Mi archivo de configuración de nginx es el siguiente:
server { location /mysite { auth_request /authVerify; proxy_pass http://localhost:4200; error_page 401 = /login; } location /authVerify { proxy_pass_request_body off; proxy_set_header Content-Length ""; proxy_set_header X-Original-URI $request_uri; proxy_pass http://localhost:3000; } location /login { proxy_cookie_path / "/; HttpOnly"; proxy_pass http://localhost:3000; } location / { root html; index index.html index.htm; } }
las configuraciones relacionadas con el registro utilizan la configuración predeterminada.
la auth_request
funciona. Pero cuando envío una solicitud a /mysite
, solo se registra en el registro de acceso, no se registra /authVerify
aunque en realidad funciona como proxy a través de esta ubicación. Si envío una solicitud a /authVerify
directamente, también habrá registros.
Entonces, en los casos de redireccionamiento, ¿cómo producir registros para todas las ubicaciones por las que se ejecuta la solicitud?
Actualización Según el comentario, configuré log_subrequest
como en el nivel de bloque http
. Después de este cambio, se produjeron los registros de rediección interna, pero el registro de la ubicación original de mysite
desapareció.
Actualmente, después de enviar una solicitud a /mysite
, el registro es el siguiente:
Encontré la siguiente explicación en nginx doc:
Requests are logged in the context of a location where processing ends. It may be different from the original location, if an internal redirect happens during request processing.
http://nginx.org/en/docs/http/ngx_http_log_module.html
¿Es por eso? ¿Algún método más para registrar todo el flujo de la solicitud?
¿Has intentado habilitar log_subrequest?
log_subrequest Context: http, server, and location Enables or disables logging of sub-requests triggered by internal redirects or SSI requests. Syntax: on or off Default value: off