序文 ご存知のとおり、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. プロジェクトファセットをクリック3. ...
序文私は Win7 を搭載した古いラップトップを持っています。古いシステムを維持しながら、同時に U...
データの応答性について話す前に、Vue はデータに対して具体的に何を行うのかという非常に重要な問題を...
複合インデックス (結合インデックスとも呼ばれます) は、複数の列に対して作成されるインデックスです...
この記事では、例を使用して MySQL ビューの原理と使用方法を説明します。ご参考までに、詳細は以下...
よく使用されるコマンドは次のとおりです。 chmod 777 文件或目錄例: chmod 777 /...
目次1. プロセス制御2. シーケンシャルプロセス制御3. 分岐フロー制御if文1. 支店構造2. ...
1. 丸い境界線: CSSコードコンテンツをクリップボードにコピー境界線の半径: 4px ; 2....
関連文書この記事の一部は、https://www.cnblogs.com/zhongchao666/...
通常は <ul><li> タグを使用しますが、dd タグと dt タグも便利...
MySQL タイム ブラインド インジェクションの 5 つの遅延方法 (PWNHUB の予期しない解...
1. 複雑なSQLクエリ1.1. 単一テーブルクエリ(1)指定の列を選択する[例] 全生徒の生徒ID...
Bashで配列を定義するbash スクリプトで新しい配列を作成する方法は 2 つあります。 1 つ目...
目次クロスドメインの理由JSONP Nginxソリューションバックエンドソリューションクロスドメイン...
Dockerのインストール依存パッケージをインストールする sudo yum install -y ...