Nginx redireciona para a porta 8080 ao acessar o URL sem barra

14

ao acessar: link - > link

Eu tentei isso:

 http {
    port_in_redirect off;

Alguma idéia?

    
por Chris Muench 18.01.2012 / 21:07

10 respostas

14

Acabei de ter o mesmo problema e port_in_redirect off; realmente funcionaram para mim, apenas certifique-se de usá-lo dentro do bloco server {} .

server {
  listen 8080;
  server_name example.com;

  port_in_redirect off;
  autoindex on;

  location / {
    root /var/www/example.com;
    index index.html;
  }
}
    
por 27.09.2013 / 05:03
4

Isso deve corrigir o problema. Adicione proxy_redirect diretiva logo após proxy_pass diretiva

proxy_redirect http://example.com:8080/ http://example.com/;

    
por 16.07.2012 / 07:42
3

Se alguém ainda estiver tendo esse problema enquanto estiver com o apache por trás da configuração do proxy reverso nginx, você pode tentar o ff:   

  location / {
    proxy_redirect off;
    proxy_set_header Host $host:$server_port; # <-- this one solved mine
    proxy_set_header X-Forwarded-Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://127.0.0.1:8083;
  }
  

Minha configuração é que deixo o Apache ouvir 127.0.0.1:8083 e deixar solicitações de proxy nginx para ele.

    
por 25.01.2017 / 09:58
2

Eu tive o mesmo problema com minha configuração nginx + Apache. O Apache parece estar redirecionando para sua própria porta (rodando em 8080), enquanto o nginx está na porta 80.

Na minha configuração, isso fez loop de redirecionamento infinito para URLs normal :

proxy_set_header Host $host:80; # Force port 80

Em vez disso, vincule os dados de retorno à porta 80, desta forma:

proxy_bind $host:80; # Bind to port 80

Aqui está o meu bloco de servidor nginx:

server {
    listen 80;
    listen [::]:80 ipv6only=on;

    server_name _; # Wildcard server

    location / {
        proxy_bind $host:80; # Bind to port 80 << THIS IS THE MAGIC
        proxy_pass http://localhost:8080;
        proxy_set_header Host            $host; # Pass host header
        proxy_set_header X-Real-IP       $remote_addr; # Preserve client IP
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

Com essa configuração de caractere curinga, todas as solicitações que o nginx não possui um bloco de servidor são passadas para o Apache.

    
por 29.11.2015 / 02:15
1

No caso de alguém mais estar tendo esse problema - o artigo aqui: link resolveu o problema para mim.

Eu tive que adicionar um cabeçalho extra no proxy.

Verifique se você tem o Host definido como $http_host e também se definiu o X-Forwarded-Host para $http_host , como abaixo:

proxy_redirect off;
proxy_set_header Host $http_host;             # <-- make sure this is $http_host
proxy_set_header X-Forwarded-Host $http_host; # <-- make sure you set this
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 16k;
proxy_buffers 32 8k;
proxy_busy_buffers_size 64k;
    
por 12.04.2016 / 09:04
1

Acho que este exemplo simples é suficiente:

location = /somefolder {
    return 302 http://$host:8080/somefolder;
}
    
por 11.10.2018 / 16:17
0

link

syntax: port_in_redirect [ on|off ]
default: port_in_redirect on
context: http, server, location

Espero que seja isso o que você está procurando.

    
por 18.01.2012 / 21:15
0

Eu tive um problema semelhante.

Talvez você deva usar a diretiva proxy_set_header para definir o host e o local dos cabeçalhos. Na minha configuração, adicionei proxy_set_header Location $host:80 ; e todos os pedidos retornam a porta 80 agora.

    
por 06.05.2012 / 10:53
0

Esse problema é causado pelo caminho relativo da tradução automática Nginx para o caminho absoluto, certo?
Existe uma maneira de dizer ao Nginx não traduzir, você adiciona um espaço antes da barra: ngx.redirect(" /foo")

    
por 09.04.2015 / 02:53
-1

Em vez disso, recomendo adicionar isso ao seu bloco de servidores:

rewrite /wp-admin$ $scheme://$host$uri/ permanent;

Isto foi quando você vai para example.com/wp-admin ele irá para example.com/wp-admin ao invés de ir para example.com:8080/wp-admin/ e se você estiver no CloudFlare DNS por exemplo vai dizer que o site está em baixo.

Estou usando o Ubuntu, o Nginx e o Varnish, e isso funciona perfeitamente agora, em vez de desativar o port_in_redirect.

Para adicionar, certifique-se de reiniciar o nginx depois:

sudo service nginx restart
    
por 01.02.2014 / 17:57

Tags