序文 ご存知のとおり、nginx 構成ファイルは add_header ディレクティブを使用して応答ヘッダーを設定します。 昨日、退屈だったので curl を使用してサイトの情報を確認したところ、返されたヘッダーが予想と異なることがわかりました。 HTTP/2 200 日付: 2019年2月7日(木)04:26:38 GMT コンテンツタイプ: text/html; 文字セット=UTF-8 変化: Accept-Encoding、Cookie キャッシュ制御: max-age=3、再検証が必要 最終更新日: 2019年2月7日(木) 03:54:54 GMT X-Cache: ミス サーバー: cloudflare ... メイン サイトでは、nginx.conf で HSTS とその他のヘッダーを構成します。 add_header Strict-Transport-Security "max-age=63072000; プリロード"; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; しかし、応答ヘッダーにはこれらのヘッダーがありません。通常のヘッダーに加えて、場所にはヘッダー X-Cache が 1 つだけ構成されています。 第一印象は、CDN がこれらのヘッダーをフィルタリングしているということですか?そこで、Cloudflare のドキュメントを探しましたが、これらの処理方法に関するドキュメントは見つかりませんでした。よく考えてみると、CDN はなぜこれらをフィルタリングするのでしょうか?食べ過ぎて飽きていませんか?彼らは政治的な調査は行いません! 問題は Nginx の設定に移ります。 Google を開いて「nginx location add_header」を検索したところ、確かにかなりの数の欠陥が見つかりました。公式サイトのadd_headerドキュメントをクリックすると、次のような説明があります(他の情報は省略されています)。
「これらのディレクティブは、現在のレベルで add_header ディレクティブが定義されていない場合にのみ、前のレベルから継承されます。」という強調に注意してください。つまり、現在のレベルに add_header ディレクティブがない場合にのみ、親設定が継承されます。したがって、私の質問は明確です。location に add_header があり、nginx.conf の設定は破棄されます。 これは Nginx の意図的な動作であり、バグや落とし穴とは言えません。しかし、この文を詳しく見てみると、もっと興味深い現象が見つかります。最新の add_header だけが機能するのです。 add_header は http、server、location で設定できますが、最も近い設定が有効になり、上記の設定は無効になります。 しかし、問題はそれだけでは終わらない。場所が別の場所に書き換えられると、最終結果には 2 番目のヘッダーのみが表示されます。例えば: 場所 /foo1 { ヘッダーを追加します。 //foo2 を書き換えます。 } 場所 /foo2 { ヘッダーを追加します。 200「OK」を返します。 } リクエストが /foo1 であるか /foo2 であるかに関係なく、最終ヘッダーは foo2 のみになります。 これは理にかなっており、正常な動作ですが、少し強制的で不快な感じがします。サーバーが http 構成を失い、場所がサーバー構成を失うのは問題ありませんが、2 つの場所は同じレベルにあります。 親構成を継承できず、現在のブロック内の命令を繰り返したくない場合は、include 命令を使用することが解決策です。 参照する
要約する 上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。 以下もご興味があるかもしれません:
|
>>: MySQL 5.7.18 マスタースレーブレプリケーション設定(マスター 1 台とスレーブ 1 台)チュートリアルの詳細な説明
目次1. データベースのマスター/スレーブ分類: 2. MySQL マスタースレーブの紹介3. マス...
1. パフォーマンス スキーマ: はじめにMySQL 5.7 では、多数の新しい監視項目の導入、ス...
序文:今日、「<!DOCTYPE> タグを注意深く理解しましたか?」と尋ねられました。私...
1. InnoDBのロック機構InnoDB ストレージ エンジンは、行レベルのロックとトランザクショ...
1. Nginx サービス基盤Nginx (エンジン x) は、パフォーマンスの最適化のために特別...
目次必要データを取得して送信するテンプレートフィルターフィルターの使用シナリオ要約する必要Vue を...
この記事では、例を使用して、MySQL データベースの最適化のためのテーブルおよびデータベース シャ...
この記事では、MySQL 5.7.17 winx64解凍版のインストールと設定方法を紹介します。具体...
序文最近、面接中に、MySQL の InnoDB エンジンがどのようにトランザクションを実装している...
フォームの送信方法をまとめると次のようになります。 1. 送信ボタンを使用して送信します。送信ボタン...
1.Mysqlイメージを取得するdocker pull mysql:5.7 2. MySQLイメージ...
背景会社のコードは第三者に提供され、利用されます。ソースコードが完全に漏洩しないようにするには、提供...
3D効果を実現するには、主にCSSのpreserve-3dプロパティとperspectiveプロパテ...
目次1. スロットを使用してコンポーネントを理解しやすくし、より強力にする2. Vuexストアを正し...
導入HibernateやMyBatisなどのORMフレームワークでは、部門に関連付けられたユーザーオ...