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

180
Vistas
Cómo configurar el bloque de ubicación para eliminar el puerto de la URL

Estoy tratando de configurar nginx para revertir el proxy a un puerto de forma dinámica en función del puerto que se encuentra en la ruta.

Entonces https://my-nginx.uksouth.cloudapp.azure.com/58585/some/route va a https://localhost:58585/some/route

Y https://my-nginx.uksouth.cloudapp.azure.com/59595/some/route va a https://localhost:59595/some/route

Puedo codificar la configuración de esta manera

 server { server_tokens off; server_name my-nginx.uksouth.cloudapp.azure.com; listen [::]:443 ssl ipv6only=on; # managed by Certbot listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/my-nginx.uksouth.cloudapp.azure.com/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/my-nginx.uksouth.cloudapp.azure.com/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot location /58585 { proxy_pass http://localhost:58585/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_redirect off; } location /59595 { proxy_pass http://localhost:59595/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_redirect off; } } server { if ($host = my-nginx.uksouth.cloudapp.azure.com) { return 301 https://$host$request_uri; } # managed by Certbot listen 80 default_server; listen [::]:80 default_server; server_name my-nginx.uksouth.cloudapp.azure.com; return 404; # managed by Certbot }

y proxy inverso como este

 ssh -R 58585:localhost:58585 myuser@my-nginx.uksouth.cloudapp.azure.com ssh -R 59595:localhost:59595 myuser@my-nginx.uksouth.cloudapp.azure.com

Esto funciona como se esperaba; entonces he tratado de hacer esto dinámico

Entonces https://my-nginx.uksouth.cloudapp.azure.com/targetPort/some/route va a https://localhost:$targetPort/some/route

Lo mejor que se me ocurre es lo siguiente, pero sigue fallando y con una puerta de enlace 502 incorrecta.

 location ~ /([0-9]+) { set $targetPort $1; proxy_pass http://localhost:$targetPort/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_redirect off; }

¿Alguien puede guiarme con la forma correcta de hacer esto? ¡Gracias!

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

0

Según la documentación :

En algunos casos, no se puede determinar la parte de un URI de solicitud que se va a reemplazar:

  • Cuando la ubicación se especifica mediante una expresión regular y también dentro de ubicaciones con nombre.

    En estos casos, proxy_pass debe especificarse sin URI.

Creo que puedes intentar usar la rewrite aquí para especificar un URI:

 location ~ ^/(\d+) { set $targetPort $1; rewrite /\d+(.*) $1 break; proxy_pass http://localhost:$targetPort; ... }

Tal vez esto se pueda optimizar para una coincidencia de expresiones regulares en lugar de dos:

 location ~ ^/(\d+)(.*) { set $targetPort $1; set $newuri $2; rewrite . $newuri break; proxy_pass http://localhost:$targetPort; ... }

Pero debe probarse, el comportamiento de nginx a veces es impredecible.

Actualizar

Esto definitivamente se puede optimizar para

 location ~ ^/(?<targetPort>\d+)(?<newURI>.*) { rewrite . $newURI break; proxy_pass http://localhost:$targetPort; ... }
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