ฉันมีการกำหนดค่า nginx ที่ค่อนข้างซับซ้อน ซึ่งบริการต่างๆ ที่ตั้ง{}
บล็อก
ฉันไม่สามารถควบคุมการกำหนดค่าเหล่านี้ได้มากนัก (เพราะหลายทีมเพิ่มการกำหนดค่าของตนเอง) แต่ฉันต้องการเพิ่มส่วนหัว HSTS ในการตอบกลับทั้งหมดจาก nginx
อย่างไร้เดียงสาฉันเพิ่ม
add_header Strict-Transport-Security "max-age=7776000; includeSubDomains" เสมอ;
ในการกำหนดค่าเริ่มต้นของฉันสำหรับเซิร์ฟเวอร์ทั้งหมด{} อินสแตนซ์
แต่ฉันประสบปัญหาที่สุดท้าย add_header
บล็อก ชนะ มากกว่าการกำหนดค่าเริ่มต้นของฉัน สถานที่ใดที่มี add_header
ในความประสงค์ของพวกเขา ไม่ ส่งส่วนหัว HSTS ของฉัน
เช่น:
[...สนิป...]
เซิร์ฟเวอร์ {
ฟัง 443 ssl;
ค่ากำหนด server_name.{{ โดเมน }};
add_header Strict-Transport-Security "max-age=7776000; includeSubDomains" เสมอ; #ฉันสามารถเพิ่มได้อย่างง่ายดาย
error_log /var/log/nginx/preference_error.log;
access_log /var/log/nginx/preference_access.log หลัก;
# / ทำหน้าที่ด้านหน้า -> proxy_pass ไปยังคอนเทนเนอร์ด้านหน้า
ที่ตั้ง / {
หมดอายุ;
add_header Cache-Control ไม่มีแคช; # คำสั่ง add_header ทั้งสองนี้ "ลบ" ส่วนหัว hsts ของฉัน
add_header X-Robots-แท็ก "noindex, nofollow";
# ส่วนหัวพร็อกซี
ค่ากำหนดโฮสต์ proxy_set_header.{{ โดเมน }};
proxy_set_header X-ส่งต่อโปรโต "https";
proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-SSL-CERT $ssl_client_cert;
proxy_set_header X-Robots-แท็ก "noindex, nofollow";
proxy_set_header อัพเกรด $http_upgrade;
proxy_set_header การเชื่อมต่อ "อัพเกรด";
#ส่งผ่านไปยังส่วนหลัง
proxy_pass http://preference_upstreams/;
}
}
มีวิธีบังคับให้เซิร์ฟเวอร์/ตำแหน่งทั้งหมดใน nginx เพิ่มส่วนหัวนี้โดยไม่ต้องเพิ่มไปยังตำแหน่งทั้งหมดที่มีคำสั่ง add_header ด้วยตนเองหรือไม่