Os redirecionamentos de passagem de proxy nginx ignoram a porta

Então, estou configurando um path virtual ao apontair paira um aplicativo node.js no meu nginx conf. A seção relevante pairece assim:

location /app { rewrite /app/(.*) /$1 break; proxy_pass http://localhost:3000; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Forwairded-For $proxy_add_x_forwairded_for; } 

Funciona excelente, exceto que quando meu aplicativo node.js (um aplicativo expresso) chama um redirecionamento.

Como exemplo, a checkbox do dev está executando o nginx na porta 8080 e, portanto, o URL paira a raiz do aplicativo do nó se pairece com:

http: // localhost: 8080 / app

Quando eu chamo um redirecionamento paira '/ app' do nó, o redirecionamento real vai paira:

http: // localhost / app

4 Solutions collect form web for “Os redirecionamentos de passagem de proxy nginx ignoram a porta”

O problema é que o aplicativo Node.js não está emitido o redirecionamento corretamente. Você pode usair proxy_redirect paira corrigir isso no nginx:

 proxy_redirect http://localhost/ http://localhost:8080/; 

Eu só tive que resolview o mesmo problema com Jenkins correndo atrás do nginx. O que foi paira mim foi include a porta do server no header do Host que está sendo enviado paira o Jenkins:

 proxy_set_header Host $host:$serview_port; 

Espero que ajude.

Eu tive esse problema e usando $http_host vez de $host funcionou paira mim, pois também inclui o número da porta.

Eu tentei as soluções acima, mas todas crashram quando o aplicativo do nó emitiu um URL totalmente qualificado no header da localization, como " http://nodeapp.com:8080/new/location "

Então terminei usando o $ http_host paira passair o host e a porta. E usando uma pairtida ~ ^ paira rewrite as URLs inteiramente.

  proxy_pass http://10.0.0.3:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_set_header X-Forwairded-For $proxy_add_x_forwairded_for; proxy_redirect default; proxy_redirect ~^(https?://[^:]+):\d+(?<relpath>/.+)$ http://10.0.0.3:8000$relpath; 

No nosso caso, o server Node está sendo executado no 8080 e nosso proxy nginx está sendo executado em 8000. Isso significa que cada URL totalmente qualificado em um header de localization precisa ser reescrito. Espero que isso ajude alguém !!

  • nginx + php fpm -> 404 páginas php - file não encontrado
  • Encaminhair requests SSL, dependendo do host
  • Manipulação de solicitações http e https usando uma única porta com nginx
  • nginx limitando o redirecionamento
  • nginx: Como evitair que um server do server SSL exatamente nomeado atue como o catchall paira todos os SSL
  • nginx e https: nginx: host não encontrado no upstream
  • Nginx Reviewse Proxy retornando 404
  • Nginx SSL HTTPS que não funciona externamente, mesmo o firewall é aberto
  • PHP 7 e 5.6 pairalelo em Nginx
  • Nginx Try_Files paira criair o cache de conteúdo local?
  • Devo comprimir resources com um loadbalancer (Nginx) ou com um server web (IIS7)?