web-dev-qa-db-ja.com

Nginxステータスページが見つかりません

Centos 7サーバーでNginxステータスページを有効にしようとしています。

私はEPELリポジトリからNginxをインストールしました。Nginxはstausページのサポートで構築されています:

[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を取得し続けるのですか?

2
verhage

serverブロックにlistenディレクティブがありません:

    listen [::]:80;

このディレクティブは、そのserverのIPv6接続に応答するようnginxに指示します。残念ながらそれを省略し、IPv4接続のみに応答しています。

ただし、localhostはIPv6アドレスに解決されるため(実際、IPv6はインターネット上のすべてのデフォルトプロトコルです)、リクエストはデフォルト設定に含まれるデフォルトのserverブロックによって処理されています、これはIPv6ではislisteningです。

IPv6(グローバルIPv6がまだない場合でも必須)およびIPv4(IPv4を使用する場合のみオプション)ですべてのserverlistenを確実にブロックするように、さらに注意する必要があります。

3
Michael Hampton

私はあなたの設定に関する問題を見ることができません、それは403ではなく404です、それはそれがその設定を読んでさえいないことを意味するので、私が通るデバッグステップは次のとおりです:

  • nginxを再起動しました;)
  • error_logに何かありますか?
  • nginxは本当にlocalhostでリッスンしていますか? ip4とip6で? (netstat -plnt
  • ヘッダーを表示してwgetを試してください(wget -SO- http://localhost/nginx_status)おそらく何かが表示されます
  • nginxは本当にこの設定ファイルを読んでいますか? (どこかに別の場所がありますか?意図的なタイプミスをして、それがバーフかどうかを確認します)
  • 複数のnginxはありますか? (ここで伸びるが、奇妙なことが起こった)。おそらく、再起動によって古いプロセスが強制終了されていませんか?
  • server_nameディレクティブを削除して、それなしで試してください
3
Nick