Nginx não está redirecionando para o local esperado

1

Eu li vários artigos ( principalmente isso ), mas ainda não entendi porque meu URL não está redirecionado corretamente.

Eu tenho um virtual no 192.168.1.4 rodando o Ubuntu-Server. Eu instalei o nginx e posso ver a página de boas vindas do nginx.

Todo o meu tráfego da porta 80 do meu roteador é redirecionado com sucesso para 192.168.1.4.

Eu tenho esses sites:

Site1 - 192.168.1.3:9810 (IIS) - www.mydomain1.com
192.168.1.1
    Site2 - 192.168.1.1:8080 (admin page for my server) www.mydomain2.com
    Site3 - 192.168.1.1:81 (a wordpress site) www.mydomain3.com

Agora, com todos os três domínios, estou atingindo a página de boas-vindas do nginx, portanto, sei que o problema está na configuração, que é mostrada abaixo:

server {
    listen 80; 
    server_name mydomain1.com; 
    location / {
        proxy_pass http://192.168.1.3:9810;
    }
}
server {
    listen 80;
    server_name mydomain2.com; 
    location / {
        proxy_pass http://192.168.1.1:8080;
    }
}
server {
    listen 80;
    server_name mydomain3.com; 
    location / {
        proxy_pass http://192.168.1.1:81;
    }
}

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

    root /usr/share/nginx/html;
    index index.html index.htm;
    server_name localhost;
    location / {
        proxy_pass http://192.168.1.1:8080;

    }
}

O que eu fiz de errado? Eu testei cada um individualmente fazendo algo como:

URL: 192.168.1.4:80/ --redirects--> 192.168.1.3:9810

E ele redireciona corretamente

    
por boywonder 26.04.2017 / 19:15

1 resposta

0

Isso parece parcialmente com um problema de servidor padrão. Você tem uma diretiva default_server em qualquer lugar? Ou qualquer outro servidor definido que use a página Nginx padrão?

O que eu acho que está acontecendo é que o Nginx analisa o nome do domínio na solicitação, mas como você está usando um IP, ele não está funcionando. Por isso, ele está servindo ao servidor padrão.

Se este for o problema, a solução é fazer solicitações ao servidor usando um nome de domínio, não um IP. Se você não tiver o DNS público configurado, use o arquivo de hosts locais para teste. por exemplo, isso vai para o seu arquivo de hosts do cliente para atalho DNS para esses domínios

192.168.1.4 example.com www.example.com example2.com

Os hosts estão aqui para o Unix

/etc/hosts 

Para o Windows

c:\windows\system32\drivers\etc\hosts

Aqui está o servidor padrão que eu uso

server {
  listen      80 default_server;
  server_name _;
  return      444; # This means "go away", effectively
}
    
por 26.04.2017 / 20:56

Tags