ฉันรู้ วารี: คุกกี้
เป็น ไม่ชอบเนื่องจากทำให้เกิดการแคชของคุกกี้ทุกรูปแบบที่ผู้ใช้อาจรายงาน ในทางกลับกัน ถ้าไม่มีมัน ฉันต้องใช้มัน การควบคุมแคช: ไม่มีแคช
เพื่อบอกเซิร์ฟเวอร์แคช NGINX ของฉันให้ข้ามเนื้อหาแคชทั้งหมดนั้น อาจ ให้ผู้ใช้เข้าสู่ระบบ (บังเอิญทุกหน้าในเว็บไซต์ของฉัน เนื่องจากมีกล่องบัญชีที่ด้านบนของหน้า)
ฉันจะส่งคุกกี้เฉพาะเมื่อผู้ใช้เข้าสู่ระบบ ดังนั้นการดูหน้าเว็บส่วนใหญ่จะได้รับประโยชน์จากการแคช ฉันต้องการจำกัดให้แคบลงเพื่อให้มีเพียงสองรูปแบบ: เวอร์ชันแคชสำหรับผู้ใช้ที่พวกเขามี "ความแปรปรวน" ไม่ คุกกี้และเวอร์ชันที่ไม่แคชสำหรับผู้ที่มีคุกกี้ (เช่น ผู้ใช้เข้าสู่ระบบและมีคุกกี้รับรองความถูกต้อง)
ถ้าฉันเพิ่ม "Vary: Cookie" ในโปรแกรม Perl ของฉัน จะมีวิธีบอก NGINX ไหมว่าในกรณีนี้ ควรสนใจเฉพาะว่า รหัสเซสชัน
คุกกี้มีอยู่หรือไม่? บางสิ่งบางอย่างตามแนว -- เพื่อสร้างส่วนหัวหลอก -- ต่างกันไป: Cookie('sessionId')
? หากมีวิธีการนำสิ่งนี้ไปใช้ในส่วนหัวที่สร้างโดยสคริปต์ที่ NGINX จะเคารพ ฉันคิดว่าฉันควรใส่ไว้ในการกำหนดค่า NGINX แต่วิธีแก้ไขใด ๆ จะได้รับการชื่นชม
ฉันไม่แน่ใจว่าจะทดสอบได้อย่างไรว่าฉันจะทำให้ NGINX คลั่งไคล้การแคชหรือไม่ แต่ฉันสงสัยว่าบางสิ่งตามบรรทัดเหล่านี้อาจใช้งานได้หรือไม่: กับผู้ดูที่ไม่ได้เข้าสู่ระบบ สคริปต์จะส่ง วารี: คุกกี้
แต่กับผู้ชมที่ เป็น เข้าสู่ระบบมันส่งทั้งส่วนหัวนั้นและ การควบคุมแคช: ไม่มีแคช
. NGINX จะเข้าใจสิ่งนี้หรือไม่ว่าบอกให้แคชการตอบสนองแรก แต่ไม่ใช่ตัวแปร หรือฉันจะทำบางอย่างผิดพลาดในแบบที่ฉันยังจับไม่ได้ในตอนนี้?
อัปเดต: นี่คือตัวอย่างบล็อกเซิร์ฟเวอร์ของฉัน:
เซิร์ฟเวอร์ {
server_name myservername.tld
ฟัง 80;
ที่ตั้ง / {
proxy_cache $PROXY_CACHE;
proxy_cache_valid 200 302 60m;
proxy_cache_valid 404 1m;
ข้อผิดพลาด proxy_cache_use_stale หมดเวลา http_429 http_500 http_502 http_503 http_504;
เปิด proxy_cache_background_update;
เปิด proxy_cache_revalidate;
proxy_cache_min_uses 1;
เปิด proxy_cache_lock;
proxy_pass $scheme://$APACHE_PROXY_REQ_IP:$APACHE_PROXY_REQ_PORT;
}
}