
Tengo un sitio con algunas URL en (http://ubicación:puerto/) y desea utilizar NGINX como proxy.
Tengo otro sitio, en (http://ubicación2:puerto2) y también quiero representarlo de tal manera que.
- Se accede al sitio 1 a través de
http://main.com
y - Se accede al sitio 2 a través
http://main.com/site2
de todos sus subenlaces.
Mi intento está fallando.
server {
listen 80;
index index.html;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://landing-page:5000;
proxy_redirect off;
}
location /insights {
return 302 $uri/;
}
location /insights/ {
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header Host $http_host;
# proxy_set_header X-NginX-Proxy true;
rewrite ^/insights/?(.*) /$1 break;
proxy_pass http://ghost:2368/;
# proxy_redirect off;
}
}
Información adicional
Estoy ejecutando NGINX en Docker y debo asignar el puerto 80 al 8080 en mi Mac.
Encontré esto:
http://localhost:8080/insights
establece la URLhttp://localhost/insights/
en el navegadorhttp://localhost:8080/insights/ghost
establece la URL enhttp://localhost:8080/ghost/
http://localhost:8080/insights/
establece la URL enhttp://localhost:8080/insights/
http://localhost:8080/insights/ghost/
establece la URL enhttp://localhost:8080/insights/ghost/
CUALQUIER URL con la barra diagonal final parece funcionar bien. ¿Por qué?
Respuesta1
Su location /
bloque debe estar al final del archivo. Los bloques de ubicación se procesan en orden y se ejecutará el primer bloque coincidente. Dado que location /
coincide con cada solicitud, siempre se ejecutará.
En general, debe tener primero los bloques más específicos, seguidos de los menos específicos y finalmente terminar con location /
todas las demás solicitudes.
Su archivo debe estar dispuesto así:
server {
listen 80;
index index.html;
location /insights/ {
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header Host $http_host;
# proxy_set_header X-NginX-Proxy true;
rewrite ^/insights/?(.*) /$1 break;
proxy_pass http://ghost:2368/;
# proxy_redirect off;
}
location /insights {
return 302 $uri/;
}
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://landing-page:5000;
proxy_redirect off;
}
}