先週末、兄弟プロジェクトはより良いサービスを提供するためにサーバーを拡張する準備をしていました。兄弟プロジェクトの一部の機能がリアルタイムで提供され、対応するシステム機能を一時的にブロックする必要がありました。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 フレックスベースのテキストオーバーフロー問題の解決方法
目次クラスコンポーネントのプロパティ比較浅い同等の浅い比較機能コンポーネントの簡単な比較先週面接に行...
MySQL の行から列への操作いわゆる行から列への操作は、テーブルの行情報を列情報に変換することです...
この記事では、CentOS 7 に Chrome ブラウザをインストールする方法を紹介します。詳細は...
なぜ高さを設定できるのでしょうか。<h1 /> などの要素とは異なり、「セミインライン」...
序文基本的に、職場のプログラマーは、count(*)、count(1)、または count(prim...
環境変数の設定の簡単な説明プログラムは、環境によって異なる環境変数を必要とします。たとえば、実稼働環...
この記事では、例を使用して、MySQL ビューの作成 (CREATE VIEW) と使用上の制限につ...
区切り文字なしの文字列抽出質問の要件データベース内のフィールド値:実装効果: 1行のデータを複数行に...
目次1. はじめに2. コードの実装2.1 目的分析2.2 実装プロセス2.2.1 エントリーコード...
現在の日付 + 時刻 (日付 + 時刻) を取得する関数: now() mysql> now(...
序文MySQL 5.7.11 以降、MySQL は、別の表領域に格納された InnoDB テーブルの...
目次元の配列を変更しない方法1. 連結文法:パラメータ:戻り値: 2. 参加する文法:パラメータ:戻...
1. コマンドラインでMySQLサービスを停止します: net stop mysql stop my...
より使いやすい Web アプリケーションを設計するための 10 のヒントをご紹介します。ヒント1: ...
目次1. はじめに2. オンデマンド属性モード3. 乱雑な遅延読み込み属性パターン4. クラスの唯一...