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