Я пытаюсь включить страницу состояния Nginx на моем сервере Centos 7.
Я установил Nginx из репозитория EPEL, Nginx построен с поддержкой staus page:
[root@server ~]# nginx -V 2>&1 | grep -o with-http_stub_status_module
with-http_stub_status_module
Я добавил один файл конфигурации /etc/nginx/conf.d/status.conf:
server {
listen 80;
server_name localhost;
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
}
После перезапуска Nginx не может найти страницу состояния:
[root@server ~]# wget http://localhost/nginx_status
--2017-01-06 17:02:09-- http://localhost/nginx_status
Resolving localhost (localhost)... ::1, 127.0.0.1
Connecting to localhost (localhost)|::1|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2017-01-06 17:02:09 ERROR 404: Not Found.
В каждом руководстве или примере, которые я нашел в Интернете, говорится, что я должен предпринять следующие шаги. Почему я продолжаю получать 404?
Я не вижу никаких проблем с вашей конфигурацией, и это 404, а не 403, что означает, что он даже не читал эту конфигурацию, поэтому шаги отладки, которые я бы сделал, следующие:
netstat -plnt
)wget -SO- http://localhost/nginx_status
) возможно что-то обнаружитсяВаш server
блок отсутствует listen
директива:
listen [::]:80;
Эта директива указывает nginx отвечать на IPv6-соединения для этого server
. К сожалению, вы его пропустили и отвечаете только на соединения IPv4.
Но с тех пор localhost
разрешается в адрес IPv6 (и фактически IPv6 является протоколом по умолчанию для всего в Интернете), ваш запрос обрабатывается по умолчанию server
блок включен в конфигурацию по умолчанию, которая является listen
на IPv6.
Вы должны быть особенно осторожны, чтобы убедиться, что все server
блоки listen
на IPv6 (обязательно, даже если у вас еще нет глобального IPv6) и IPv4 (необязательно, только если вы используете IPv4).