NGINX をキャッシュ レイヤーとして使用してきましたが、最近負荷テストを行ったときに、異常な問題に遭遇しました。負荷テストでは、すべてのコンテンツでキャッシュ ミスしか発生しませんでした。
トラフィックは次のように流れます: クライアント > NLB > NGINX > ELB (スティッキ性) > アプリケーション層
少し分析とトラブルシューティングを行った結果、この動作の理由は、負荷インジェクターが送信するリクエストに「AWSELB」スティッキー Cookie が含まれていないことが原因であるという結論に達しました。Cookie が設定されていない場合、AWS ELB は AWSELB の値を含む「set-cookie」を送信し、キャッシュ コントロール: no-cache="set-cookie"も含めます。
「no-cache」ディレクティブがあるため、NGINX は、Cookie が送信されない限り、期待されるキャッシュ エントリを作成しません (この時点以降のリクエストは、キャッシュ ヒット動作を行います)。多くのリンク/質問とドキュメントを調べてきましたが、これまでのところ解決策を見つけることができませんでした. 誰かがこれを経験しましたか?どのように対処しましたか?
サンプルリクエスト:
GET /asset/style.1234567.css HTTP/2
Host: mytestserver
User-Agent: curl/7.54.0
Accept: */*
サンプル応答スニペット:
< HTTP/2 200
< server: nginx
< date: Tue, 04 Dec 2018 16:35:50 GMT
< content-type: text/css; charset=UTF-8
< content-length: 572353
< accept-ranges: bytes
< cache-control: public, max-age=3600
< cache-control: no-cache="set-cookie"
< set-cookie: AWSELB=VERYBIGCOOKIEWITHAWSELBDETAILS;PATH=/;MAX-AGE=60
< x-proxy-cache: MISS
問題の署名に最も近い投稿/記事ですが、CloudFront に適用され、それがどのように処理されたかについての詳細はありません: https://forums.aws.amazon.com/thread.jspa?messageID=362272