Proxy de um site com NGINX para outro site

Proxy de um site com NGINX para outro site

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.

  1. O site 1 é acessado via http://main.come
  2. O site 2 é acessado http://main.com/site2com 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:

  1. http://localhost:8080/insightsdefine URL para http://localhost/insights/no navegador
  2. http://localhost:8080/insights/ghostdefine URL parahttp://localhost:8080/ghost/
  3. http://localhost:8080/insights/define URL parahttp://localhost:8080/insights/
  4. 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;
    }
}

informação relacionada