(すべてのvhostの場合と同様に)nginxサーバー全体にデフォルトのerror_pageを設定しようとしています。
私は次のコードでそれを試しています:
http {
...
...
error_page 404 /var/www/default/404.html;
...
...
}
また、明示的に別の仮想ホストを作成しない場合は、仮想ホストを作成して、デフォルトの404.htmlを使用できるようにしたいと思います。
何かのようなもの:
server {
...
server_name mydomain.com
root /var/www/mydomain.com/;
...
}
とにかく、次のエラーが発生します。
[error] 16842#0: *1 open() "/var/www/mydomain.com/var/www/default/404.html" failed (2: No such file or directory)
私はエラーを理解し、なぜそれが起こっているのかは理解していますが、仮想ホストのルートに追加する代わりに、デフォルトのerror_pageを絶対パスとして使用するようにNGINXに指示できない理由を理解できません。
それを作る方法はありますか?
よろしく
あなたがすでに発見したように、error_page
ディレクティブは、ドキュメントroot
に関連するドキュメントを指定します。
これを回避する1つの方法は、エラーページの仕様を含む個別のファイルを作成することです。このファイルには適切なlocation
ブロックが含まれ、次に各include
からのserver
が使用されます。 「グローバル」error_page
。
たとえば、ファイル/etc/nginx/global404
:
location = /404.html {
root /var/www/default;
}
error_page 404 /404.html;
各server
ブロックで、次のことを行います。
include global404;
以前に提出したinclude
アプローチを使用する予定ですが、完全を期すために、別の方法として、シンボリックリンクを使用します。管理する仮想ホストごとに追加の操作が必要ですが、サーバー構成の変更や再起動をさらに必要としないという利点があります。
http {
...
...
error_page 404 /error/404.html;
...
...
}
...そして各仮想ホストのルートで...
ln -s [path to error page html directory] /[vhost root]/error
このアプローチは、私をエレガントで移植性がないものだと思います(賛成または反対に投票するのに十分な担当者がいる場合は、反対に投票します)が、機能します。