Lo que quiero hacer es: Cuando alguien visita http://localhost/route/abc
el servidor responde exactamente lo mismo quehttp://localhost:9000/abc
Ahora configuro mi servidor Nginx así:
location /route {
proxy_pass http://127.0.0.1:9000;
}
La solicitud HTTP se envía al puerto 9000
correctamente, pero la ruta que recibe http://localhost:9000/route/abc
no es http://localhost:9000/abc
.
¿Alguna sugerencia?
Respuesta1
Odio la sutileza aquí, pero intenta agregar un / al final de 9000 como se muestra a continuación. Ahora ya no agregará "ruta" a la solicitud reenviada.
location /route {
proxy_pass http://127.0.0.1:9000/;
}
Respuesta2
Creo que puedes usar la reescritura para eliminar la parte adicional de la URL. En tu caso creo que podrías usar:
location /route/ {
rewrite ^/route/?(.*)$ /$1 break;
proxy_pass http://127.0.0.1:9000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Sin embargo, si su aplicación tiene enlaces internos, es posible que aún apunten a /abc/foo y, si hace esto, deben apuntar a /route/abc/foo para que la solicitud sin formato llegue correctamente. Es posible que sea mejor dejar la configuración de nginx como está y, en su lugar, configurar su aplicación para que sepa que se encuentra en un subdirectorio, si puede.
Sé que esta es una vieja pregunta, ¡pero fue la principal respuesta de Google cuando intentaba resolver el mismo problema!
Respuesta3
Prueba lo siguiente
location /route/ {
proxy_pass http://127.0.0.1:9000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Respuesta4
empujenginx.conf
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8080;
location / {
proxy_pass http://compute-1-36:8787;
proxy_redirect http://compute-1-36:8787/ $scheme://$host:8080/;
}
}
}
Este código escucha en 8080 y redirige al puerto 8787 en Compute-1-36. Puedes seleccionar otra ruta en la ubicación./