web-dev-qa-db-ja.com

nginxに相当する自然な.htaccessがないという事実は、小さな構成変更ごとにサーバー全体を再起動する必要があることを意味しますか?

Apacheを使用して、サーバー上のWebサイトの「書き換えルール」を少し変更したい場合は、/var/www/website5/.htaccessの数行を編集して保存するだけで、すぐにアクティブになります。

利点:service Apache2 restartを使用する必要がないため、同じサーバー上にある他のWebサイトで進行中の接続が中断されることはありません(想像してみます)誰かが現在大きな1 GBをダウンロードしているので、これを中断したくない!).


質問:現在nginxをテストしていますが、.htaccessに相当する「自然な」ものはないことを読みました(もちろん、これを可能にするアドオンはありますが、ここでは本当に焦点を合わせていますnginxの元の哲学を理解している、それはこの機能を持っていません)。

サーバー全体(多くのWebサイトをホストしている)の再起動を必要とせずに、Webサイトのnginx構成(URL書き換えルールなど)をわずかに変更する方法?

PS:

  • nginxを再起動する前にリクエストの終了を待機する「グレースフルリロード」機能が存在する場合、これは、クライアントが2 GBのファイルのダウンロードを開始した直後に2時間続く場合、nginxが2時間待機することを意味します(リクエスト新しい構成を再ロードする前に完了しますか?
    その後、構成の変更が行われたことをテストするために数分/時間待機する必要がある場合、構成を変更することは非常に困難です。

  • 後者の問題が存在しない場合、どのように機能しますか? (この特定のポイントに関するドキュメントソースはありますか?)

2
Basj

Nginxサービスの再起動は、代わりに 'reload'を使用することで回避できます。コマンドservice nginx reloadを使用できます。これにより、ダウンタイムなしでnginxがリロードされます。まずnginx構文を確認してください:service nginx configtest

これは1つのコマンドで実行できます。

service nginx configtest && service nginx reload

最初のコマンドの&& wil continueのみが0の終了コードを示し、構成の構文に問題がなかったことを示します。

リロードの実行中、NGINXプロセスは正常にシャットダウンします。これに関する詳細は Nginxのドキュメント にあります。

例:

4つのNginxワーカープロセスがあり、1つに長時間のダウンロードがある場合、リロード後に5つのワーカープロセスがあります。4つのフレッシュワーカーと1つがシャットダウンが完了するまで、ダウンロードが完了するまでダウンロードを処理します。

4
Jochem