Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.1K
Vistas
NGINX no redirige en auth_request 302

Tengo un proxy inverso NGINX que también sirve contenido estático en / con la siguiente configuración

 location / { auth_request /authn; proxy_intercept_errors on; recursive_error_pages on; error_page 301 302 303 307 308 = @handle_redirect; gzip_static on; index index.html; root /usr/share/nginx/html; try_files $uri $uri/ @index; } location /authn { set $target http://gateway:8030/authn; proxy_pass http://gateway:8030/authn; proxy_pass_request_body off; proxy_set_header Content-Length ""; proxy_set_header X-Original-URI $request_uri; proxy_pass_request_headers on; proxy_intercept_errors on; recursive_error_pages on; error_page 301 302 303 307 308 @handle_redirect; } location @handle_redirect { proxy_set_header Host $host:$server_port; set $redirect_url $upstream_http_location; proxy_pass $redirect_url; }

El objetivo es verificar que el usuario esté autenticado por subsolicitud al punto final /authn, que devolverá 302 y el encabezado de ubicación si el usuario no lo está. Pero el cliente obtiene 500 de NGINX con un registro de errores como

 auth request unexpected status: 500 while sending to client

También tengo un punto final /root que pasa poxy directamente a la puerta de enlace /authn que redirige correctamente a la página de inicio de sesión y autentica al cliente. En lugar de manejar redireccionamientos en subsolicitudes, probé solicitudes de paso de proxy a este punto final con la configuración

 location /root { set $target http://top-gateway:8030/authn; proxy_pass http://top-gateway:8030/authn; } location /authn { ... error_page 301 302 303 307 308 /root;

Pero en este caso me sale 500 y

 auth request unexpected status: 302 while sending to client

en NGINX error.log

¿Por qué NGINX no maneja las redirecciones correctamente con esta configuración y cómo resolverlo correctamente?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Tal vez esto sea útil para usted para saber por qué falla, tal vez llegué tarde, pero encontré este hilo para hacer algo similar.

https://nginx-devel.nginx.narkive.com/0cH1MZv7/patch-allow-http-auth-request-module-to-forward-302-responses

El enlace muestra una conversación entre un desarrollador de Nginx y un usuario que estaba motivado para escribir un parche. Parece que Nginx solo admite códigos 2xx y 4xx para auth_request. Pero podría hacer algo como esto si controla la aplicación como se muestra en ese enlace.

 location / { auth_request /auth; auth_request_set $auth_redirect $upstream_http_location; error_page 401 = /auth_redirect; } location /auth { proxy_pass http://auth_backend; ... } location /auth_redirect { return 302 $auth_redirect; }

Además, me resultó útil leer esto (no es lo mismo, pero es una pista para algunas ideas):

¿Cómo realizo llamadas de servicio web dentro de nginx?

Este enlace muestra una introducción simple (que puede encontrar en la documentación) sobre auth_request_set.

 auth_request_set $x_upstreamhost $upstream_http_x_upstreamhost;

Además, aquí hay un nivel profundo de la implementación del código de auth_request.

https://www.nginx.com/resources/wiki/extending/examples/auth_request/

Este enlace muestra un desglose del código de la implementación de auth_request. No puedo incluir eso aquí.

Salud,

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda