По какой-то причине любой локальный IP-адрес в диапазоне 127.xxx.xxx.xxx перенаправляет обратно на значение по умолчанию «Добро пожаловать в nginx!». страница.
По моему опыту работы с Apache, только IP-адрес 127.0.0.1 разрешается обратно на веб-сервер Apache.
Как заставить Nginx работать только с адресом 127.0.0.1?
Спасибо,
Бен
У вас есть две отдельные проблемы - во-первых, несколько адресов (127.0.0.1/8) зарезервированы для обратной связи - однако это только объясняет, почему такой адрес, как 127.0.0.2, по-прежнему будет указывать на ваш компьютер.
Вторая проблема заключается в том, что NginX по умолчанию привязывается ко всем доступным адресам. Этот параметр определяется listen
директива.
Вы можете убедиться, что NginX действительно привязан ко всем адресам, посмотрев на netstat -pant | grep nginx
, который может показывать что-то вроде:
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
Обратите внимание 0.0.0.0:80
под локальным адресом, что означает привязку ко всем адресам.
Если вы измените ВСЕ блоки сервера, чтобы иметь директиву прослушивания, которая явно указывает адрес для привязки (например, listen 127.0.0.1:80
) должно получиться следующее:
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
(Протестировано с CentOS 6.2, Nginx 1.2, с использованием curl
- после внесения изменения попытка подключения к 127.0.0.2 (или любому другому адресу, отличному от 127.0.0.1), приводит к: curl: (7) couldn't connect to host
)
Примечание: вы должны явно установить директиву прослушивания для всех блоков сервера, иначе NginX по-прежнему будет прослушивать все адреса. Директива прослушивания по умолчанию (т.е. когда она опущена): listen *:80
и NginX будет пробовать каждый доступный серверный блок и использовать «наилучшее соответствие», даже если server_name
не совпадает (если вы укажете listen ... default
тогда он будет использовать тот).
Согласно разделу 1.3.2.3 (Адресация) RFC 1122, весь блок 127.0.0.0/8 зарезервирован для обратной связи; вам следует избегать использования bogon IP-адресов, особенно специальных, как определено в RFC 5735, для каких-либо целей, кроме частной адресации, поскольку результаты могут быть неопределенными.