
Eu tenho um site com alguns URLs em (http://local:porto/) e deseja usar o NGINX para fazer proxy dele.
Eu tenho outro site, em (http://local2:porta2) e deseja fazer proxy também.
- O site 1 é acessado via
http://main.com
e - O site 2 é acessado
http://main.com/site2
com todos os seus sublinks
Minha tentativa está falhando.
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;
}
}
Informação adicional
Estou executando o NGINX no Docker e preciso mapear a porta 80 para 8080 no meu Mac.
Eu encontrei é isso:
http://localhost:8080/insights
define URL parahttp://localhost/insights/
no navegadorhttp://localhost:8080/insights/ghost
define URL parahttp://localhost:8080/ghost/
http://localhost:8080/insights/
define URL parahttp://localhost:8080/insights/
http://localhost:8080/insights/ghost/
define URL parahttp://localhost:8080/insights/ghost/
QUALQUER URL com barra final parece funcionar bem. Por que?
Responder1
Seu location /
bloco deve estar no final do arquivo. Os blocos de localização são processados em ordem e o primeiro bloco correspondente será executado. Como location /
corresponde a todas as solicitações, sempre será executado.
Em geral, você deve ter primeiro os blocos mais específicos, seguidos pelos blocos menos específicos e, finalmente, terminando com location /
todas as outras solicitações.
Seu arquivo deve ser organizado assim:
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;
}
}