サーバーが存在するときにメンテナンスページを表示するようにサーバーを構成したい。私はこのコードを試してみました:
location / {
try_files /maintenance.html $uri $uri/ @codeigniter;
}
しかし、それは200のステータスコードで提供されることに気づき、検索エンジンを混乱させる可能性があります。ベストプラクティスは503ステータスコードを返すことだと思います。グーグルで this のようないくつかの関連ページを見つけました。ただし、リダイレクトを行うためにifを使用し、nginxのドキュメントによると、ifsを使用するのは安全ではありません。
Ifを使用せずにそれを行う方法はありますか?この場合、使用しても安全ですか?
ありがとう。
ベストプラクティスは500ステータスコードを返すことだと思います。
私はあなたが500ではなく503を意味すると思います。
彼らは
if
を使用してリダイレクトを行い、nginxのドキュメントによると、ifsを使用するのは安全ではありません。
いいえ。return
だけがif
コンテキストのlocation
内で100%安全です。
nginx documentation によると、try_files
の最後の引数としてHTTPステータスコードを指定できます。私はこれを試しましたが、うまくいきませんでした。
これが私がすることです。
if (-f $document_root/maintenance.html) {
return 503;
}
error_page 503 @maintenance;
location @maintenance {
rewrite ^(.*)$ /maintenance.html break;
}
ファイルがある場合は、メンテナンスページが表示されます。ファイルを削除すると、通常に戻ります。
はい、一時的にHTTP 503を使用することが重要です。リダイレクト。それは私がそれを解決した方法です:
server {
listen 80;
server_name joergfelser.at;
root /var/www/joergfelser.at/;
location / {
if (-f $document_root/maintenance.html) {
return 503;
}
... # rest of your config, it's important to have
... # the maintenance case at the very top
}
error_page 503 @maintenance;
location @maintenance {
rewrite ^(.*)$ /maintenance.html break;
}
}
また、そのトピックに関するブログ投稿も書いています。
https://www.joergfelser.at/redirecting-to-a-custom-nginx-maintenance-page/
ハッピーメンテナンス;)