環境:Nginx、Node.js、數位海洋 Droplet
的文檔新增標題指令表明它可以在http
,server
或location
上下文中使用。
但是當我添加我的內容安全策略當我測試它時,沒有檢測到http
或上下文server
https://csp-evaluator.withgoogle.com/或者https://securityheaders.com/。
當我將其添加到location
區塊時,兩個網站都會檢測到它。
範例標題:
add_header content-security-policy "default-src 'self';"
我的nginx.conf
有 5 個location
區塊,其中一個用作代理。我需要添加content-security-policy
到每個區塊還是有更好的方法?
location ~* \.(jpg|png|svg|webp|ico)$ { }
location ~* \.(css)$ { }
location ~* \.(htm|html)$ { }
location ~* \.(js)$ { }
location / {
proxy_pass http://127.0.0.1:9999;
}
另外,我是否需要將所有其他主要安全標頭添加到每個區塊中?這似乎是多餘的,但如果這是保護網站安全的唯一方法,我會這樣做。
答案1
該add_header
指令有一個有趣的屬性。來自文件:
可能有多個
add_header
指令。當且僅add_header
噹噹前層級上沒有定義任何指令時,這些指令才會從先前的配置層級繼承。
這意味著如果您要添加其他如果這些區塊之一中包含頭文件,則需要重複或區塊中的location
任何add_header
指令。server
http
考慮使用include
d 檔案來組織您可能需要重複的指示。