Es bastante fácil enrutar las solicitudes en función de si tienen o no un conjunto de encabezado particular. El bit difícil viene de determinar si está configurado correctamente.
La mayoría de la autenticación web es algo como esto: usted solicita una página. La aplicación ve que no ha enviado una cookie de sesión y lo redirige a la página de inicio de sesión. Usted ingresa y obtiene una cookie de sesión. Vuelve a solicitar la primera página, el servidor lee la cookie de sesión y la valida, luego le envía la página.
La parte difícil para usted es lidiar con la validación. Dice que no desea que ninguna solicitud no autenticada de llegue a su aplicación, pero eso significa que no solo necesita verificar que el cliente haya enviado la autenticación, sino que es válido . De lo contrario, es fácil para un atacante establecer un valor arbitrario para su encabezado de autenticación y obtener acceso a su aplicación.
Por lo general, diría que debe implementar controles de acceso en la aplicación. Conoce el contexto de las diversas páginas que sirve, y el hecho de que la autenticación y la autorización se incluyan directamente con la aplicación hace que sea más difícil para un atacante eludir la capa de autenticación. Sin embargo, según su pregunta, asumo que esta no es una solución viable para usted (porque es una aplicación de terceros que no puede modificar, por ejemplo).
Nginx es realmente bueno en el procesamiento de solicitudes http. No es particularmente bueno para implementar la lógica de la aplicación. Tendría nginx proxy todas las solicitudes a una aplicación de autenticación, y esa aplicación luego envía las solicitudes autenticadas a la aplicación principal. Esto será mucho más sencillo que intentar implementar la comprobación automática en nginx.