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).