URI base del proxy inverso de Nginx para cambiar el puerto

URI base del proxy inverso de Nginx para cambiar el puerto

Hola, quiero un proxy inverso que use mi puerto base Nginx, por ejemplo.

http://example.com:443/ips/8443 -> http://example.com:8443/ips/8443
http://example.com:443/ips/23950 -> http://example.com:23950/ips/23950

Si lo admite sería mucho mejor, pero no es obligatorio.

http://example.com:443/ips/23950/xyz -> http://example.com:23950/ips/23950/xyz

Y esta es mi configuración.

    location ~ /ips/([0-9]+)(/|)(\S+|)$ {
            proxy_pass http://127.0.0.1:$1/$3;
    }

No entiendo REGEX en nginx correctamente, pero puedo decir que hice lo mejor que pude

Respuesta1

Para solucionar este problema, deberá actualizar la directiva proxy_pass para incluir la ruta URL completa en la solicitud de proxy. Esto se puede hacer utilizando la variable $request_uri, que contiene la ruta URL completa de la solicitud entrante.

A continuación se muestra un ejemplo de cómo podría verse la directiva proxy_pass actualizada:

proxy_pass http://127.0.0.1:$1$request_uri;

Esto pasará la solicitud al puerto local, junto con la ruta URL completa de la solicitud entrante. Por lo tanto, una solicitud a /ips/23950/xyz se enviará mediante proxy ahttp://127.0.0.1:23950/xyz, lo que debería permitir que el servidor local maneje correctamente la solicitud.

También vale la pena señalar que el bloque de ubicación que contiene la directiva proxy_pass debe ser el único bloque dentro del bloque de ubicación /ips. Esto se debe a que los bloques de ubicación se procesan en orden y la declaración return 404 en el bloque de ubicación externo evitará que se procesen todas las solicitudes que coincidan con el bloque de ubicación interno. Por lo tanto, deberá mover la declaración return 404 dentro del bloque de ubicación que coincide con las URL con números de puerto y cambiarla para que devuelva 403 o algún otro código de error que indique que la URL solicitada no está permitida.

A continuación se muestra un ejemplo de cómo podría verse la configuración actualizada:

location ~ ^/ips/([0-9]+) {
    proxy_redirect off;
    proxy_pass http://127.0.0.1:$1$request_uri;
    proxy_http_version 1.1;
   

información relacionada