web-dev-qa-db-ja.com

nginxのデフォルトのエラーページが何らかの理由で機能しなくなった

これは以前は機能していました:

server {
  server_name example.com;

  location / {
    proxy_pass http://localhost:8888;
    error_page 502 /502.html;
  }

  location = /502.html {
    root /var/www/example;
  }
}

今突然それはもうありません...私は何が変わったのか分かりませんか?

表示される代わりに404を取得します/var/www/example/index.htmlポート8888が応答しない場合...

これを再び機能させる方法は?ありがとうございました

1
davidhq

コンテンツの大部分はリモートサーバー上にあります。エラーページを(いくつかのリソースと一緒に)ローカルで提供する必要があります。上流から提供される場所とは異なる「特別な場所」が必要であり、そこにすべてのローカルリソースを配置します。 8888から何を提供しているのかわからないため、その場所の名前を選択できません。ただし、今のところ/error_pagesとしましょう。

server {
    server_name example.com;

    location / {
        proxy_pass http://localhost:8888;
        error_page 502 /error_pages/502.html;
    }

    location /error_pages {
        root /var/www/example;
    }
}

上記の構成では、502.htmlを編集し、リソースのURLを変更して/error_pagesプレフィックスを追加する必要があります。

また、すべてのファイル(502.htmlとそのリソースファイル)を/var/www/example/error_pages/サブディレクトリに移動する必要があります。

0
Richard Smith

構成には、エラードキュメントが/var/www/example/502.htmlであると記載されています。構成内の何も、いつでも/var/www/example/index.htmlをロードしようとはしません。ファイルの名前を変更します。

0
Michael Hampton