Nginx를 사용하면 모든 위치 블록에 콘텐츠 보안 정책을 추가해야 합니까?

Nginx를 사용하면 모든 위치 블록에 콘텐츠 보안 정책을 추가해야 합니까?

환경:Nginx, Node.js, 디지털 오션 드롭렛

에 대한 문서add_header지시문 은 또는 http컨텍스트 에서 사용할 수 있음을 나타냅니다 .serverlocation

그러나 내가 추가하면콘텐츠 보안 정책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_headerserverhttp

include반복해야 할 수 있는 이와 같은 지시문을 구성하려면 d 파일을 사용하는 것이 좋습니다 .

관련 정보