先週末、兄弟プロジェクトはより良いサービスを提供するためにサーバーを拡張する準備をしていました。兄弟プロジェクトの一部の機能がリアルタイムで提供され、対応するシステム機能を一時的にブロックする必要がありました。nginxを使用したため、nginxを直接構成して、修正されたシステムメンテナンスページにリダイレクトすることができました。 Nginx のリダイレクトは実際には非常に簡単です。 return または rewrite キーワードのいずれかを使用できます。リダイレクトは静的ページに直接ジャンプするため、後続の操作やレコードは不要であり、直接 301 永続リダイレクトが使用されます。 リダイレクトは、サーバーまたは特定の場所で設定できます。以下は、それぞれについて簡単に説明します。 サーバーで設定: http { サーバ{ 聞く 80; サーバー名 A.com; # 以下の return または rewrite のいずれかを選択します。このうち、upgrade.html は私が自分で書いたプロンプト ページです。301 http://B.com/upgrade.html を返します。 # 書き換え ^/(.*)$ http://B.com/upgrade.html permanent; location / { # 以下の設定内容はここでは省略します} } } または、次の場所で設定します: http { サーバ{ 聞く 80; サーバー名 A.com; 位置 / { ^/(.*)$ http://B.com/upgrade.html を永久に書き換えます。 # 以下の設定内容はここでは省略します} } } 上記の例から、return は 301 パラメータリダイレクトを使用し、rewrite は permanent を使用していることがわかります (もちろん、break や last を使用することもできます。違いを知りたい場合は、自分で情報を調べてください)。 上記の 2 つの例では、A.com が B.com にリダイレクトするために使用されていることにお気づきでしょうか。A.com を使用して A.com/upgrade.html に直接リダイレクトしようとしましたが、繰り返しが多すぎるというエラー メッセージが報告され、無限ループに入ります。複数のドメイン名を同時に管理する場合、A を B にリダイレクトするように設定できますが、ドメイン名 A が 1 つしかない場合はどうなるでしょうか? このとき、if 条件を使用して判断します。ここでは、サーバー内の構成を例に説明します。 http { サーバ{ 聞く 80; サーバー名 A.com; # if の後にはスペースが必要であることに注意してください。 ! ! $request_uri の場合: 301 http://A.com/upgrade.html を返します。 } 位置 / { # 以下の設定内容はここでは省略します} } } 上記の例では、アクセス パスに /upgrade.html が含まれていない場合、upgrade.html にリダイレクトされることを示しています。このとき、リダイレクトは成功し、繰り返しすぎてもプロンプトは表示されません。ただし、別の問題があります。つまり、upgrade.html 内の画像が表示されないということです。画像がリダイレクトされないようにする方法を研究する時間がありません。後で時間があるときにさらに追加します。 if 条件をテストしているときに、特に落とし穴に遭遇しました。つまり、if を追加して nginx を再起動すると、次のエラー メッセージが表示されました。 制御プロセスがエラー コードで終了したため、nginx.service のジョブが失敗しました。詳細については、「systemctl status nginx.service」および「journalctl -xe」を参照してください。 systemctl status nginx.service と入力して、nginx: [emerg] unknown directive "if($request_uri" エラーなどのエラー情報を表示します。答えを見つけました。if の後にスペースが必要であることが判明しました!!! !!! 残念です。インターネット上の nginxif を紹介する記事には、このような重要な情報は記載されていませんでした... 情報ありがとうございます: if の後にスペースが必要です: https://blog.csdn.net/palet/article/details/103394236 nginx で戻って書き直す: https://blog.csdn.net/u010982507/article/details/104025717 知識ポイント補足任意のアドレスを入力するとメンテナンスページにリダイレクトするように nginx を設定します 注: 任意のアドレスを入力するとメンテナンスページにリダイレクトするように nginx を設定します。 サーバー{ 聞く 80; ルート /xxx/xxx/src; インデックス index.html index.htm; サーバー名 test.xxx.com; $flag を 0 に設定します。 $request_uri の場合 ("(/static/.*)$"){ $flag を "${flag}1" に設定します。 } $request_uri が "/502.html$" の場合{ $flag を "${flag}2" に設定します。 } $flag = "012"の場合{ ^(.*) http://test.xxx.com/502.html を永続的に書き換えます。 } 位置 /{ ... 上記は、システムメンテナンスページへのnginxリダイレクトの詳細です。nginxリダイレクトメンテナンスページの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
>>: CSS フレックスベースのテキストオーバーフロー問題の解決方法
昨晩、面接の質問を見ていたら、CSS スタイルの優先順位について特に明確に説明していない人が何人かい...
問題の原因:スレーブサーバーがクローンマスターサーバーである場合、server-uuidの値は同じで...
1. リストリスト ulコンテナーには、一貫した構造とスタイルを持つテキストまたはグラフの形式が読...
Navicat を使用してリモート Linux MySQL データベースに接続すると、不明なエラー ...
鉛Web ページ上の一般的な三角形の一部は、画像やフォント アイコンにする必要なく、CSS を使用し...
バックエンドは thinkphp3.2.3 フレームワークを使用します。他の言語を使用している場合は...
Windows 10 で Docker コンテナのポートにアクセスできない問題を解決する (ポート ...
私は最近countlyに触れて、慣れてきました。私は、必要に応じてcountlyのクラッシュプラグイ...
序文LINUX では、定期的なタスクは通常、cron デーモン プロセス [ps -ef | gre...
フロントエンドのレイアウト プロセスでは、水平方向の中央揃えを実現するのは比較的簡単で、通常は ma...
コードをコピーコードは次のとおりです。 <!--[if !IE]><!-->...
1. マルチヘッダーテーブルコードコードをコピーコードは次のとおりです。 <!DOCTYPE ...
Vue でprovide+inject組み合わせを使用するまず、App.vue を変更する必要があ...
この記事では、DIYポストカード機能を実現するためのfabricjsの具体的なコードを参考までに共有...
HTML メールはこのサイト上の独立したホスト ページではないため、他の誰かによってホストされていま...