Nginx: Todos os endereços IP locais são redirecionados para o Nginx

2

Por algum motivo, qualquer endereço IP local no intervalo 127.xxx.xxx.xxx redireciona de volta para o padrão 'Bem-vindo ao nginx!' página.

Da minha experiência com o Apache, somente o endereço IP 127.0.0.1 retornaria ao servidor web apache.

Como posso fazer o Nginx agir somente no endereço 127.0.0.1?

Obrigado,

Ben

    
por Ben 03.05.2012 / 19:10

2 respostas

2

Você tem dois problemas separados - em primeiro lugar, vários endereços (127.0.0.1/8) são reservados para loopback - no entanto, isso explica apenas porque um endereço como 127.0.0.2 ainda aponta para o seu computador.

O segundo problema é que o NginX, por padrão, se liga a todos os endereços disponíveis. Essa configuração é definida pela diretiva listen .

Você pode verificar se o NginX, de fato, está vinculado a todos os endereços, observando netstat -pant | grep nginx , o que pode mostrar algo como:

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      12534/nginx

Observe o 0.0.0.0:80 no endereço local, o que significa vincular a todos os endereços.

Se você alterar TODOS os blocos de servidor para ter uma diretiva de escuta que especifique explicitamente o endereço ao qual se vincular (por exemplo, listen 127.0.0.1:80 ), obtenha o seguinte:

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 127.0.0.1:81                0.0.0.0:*                   LISTEN      12536/nginx

(Testado com o CentOS 6.2, Nginx 1.2, usando curl - depois de fazer a alteração, tentando se conectar ao 127.0.0.2 (ou qualquer outro endereço não 127.0.0.1), resulta em: curl: (7) couldn't connect to host )

Nota: você deve definir explicitamente a diretiva de escuta em todos os blocos de servidores, caso contrário, o NginX continuará escutando em todos os endereços. A diretiva de escuta padrão (isto é, quando é omitida) é listen *:80 e NginX tentará cada bloco de servidor disponível e usará a 'melhor correspondência', mesmo que server_name não corresponda (se você especificar listen ... default , usará isso).

    
por 03.05.2012 / 20:19
0

Por seção 1.3.2.3 (Endereçamento) da RFC 1122, o bloco inteiro 127.0.0.0/8 é reservado para loopback; você deve evitar o uso de endereços IP bogon, especialmente aqueles de finalidade especial, conforme definido no RFC 5735 para algum propósito diferente do endereçamento privado, pois os resultados podem ser indefinidos.

    
por 03.05.2012 / 19:45