nginx.conf

nginx.conf

여러 보안 관련 헤더를 서버에 추가하여 모든 프록시 위치에서 반환되도록 하는 Nginx 프록시 설정이 있습니다. 일부 위치에서는 추가 헤더(예: Content-Security-Policyto ) 를 추가해야 하고 , 다른 특정 위치에서는 서버 수준에 추가된 헤더 중 하나(예: from ) /를 제거해야 합니다 .X-Frame-Options/framepage.html

nginx.conf

# ...

server {
  # ...

  include security-headers.conf;

  location / {
    proxy_pass http://web:5000/;
    include security-headers.conf;
    add_header Content-Security-Policy "my csp...";
  }

  location = /framepage.html {
    proxy_pass http://web:5000/framepage.html;
    # TODO: remove `X-Frame-Options` response header from this specific page
    # Tried add_header X-Frame-Options "";
    # Tried proxy_set_header X-Frame-Options "";
    # Tried proxy_hide_header X-Frame-Options;
  }

  location /api/ {
    proxy_pass http://api:5000/;
  }

  location /otherstuff/ {
    proxy_pass http://otherstuff:5000/;
  }

  # ...
}

security-headers.conf

add_header Referrer-Policy same-origin;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";

다음을 시도했지만 그 중 어느 것도 위치 응답 X-Frame-Options에서 헤더를 제거하지 않는 것 같습니다 /framepage.html.

  • add_header X-Frame-Options "";
  • proxy_set_header X-Frame-Options "";
  • proxy_hide_header X-Frame-Options;

X-Frame-Options위치 응답 에서 헤더 를 어떻게 제거할 수 있나요 /framepage.html?

답변1

헤더 구성 속성은 약간 혼란스럽습니다. 그 역할은 다음과 같습니다.

proxy_set_header요청 헤더를 설정하는 것입니다
add_header. 응답에 헤더를 추가하는 것
proxy_hide_header입니다. 응답 헤더를 숨기는 것입니다.

add_header응답에 이미 존재하는 헤더를 바꾸려는 경우 (서버와 추가한 값의) 값이 쌓이기 때문에 충분하지 않습니다 .

이 작업은 두 단계로 수행해야 합니다.

1)헤더 제거:
proxy_hide_header Access-Control-Allow-Origin;

2)사용자 정의 헤더 값을 추가하십시오.
add_header Access-Control-Allow-Origin "*" always;

답변2

headers_more 모듈을 사용할 수 있습니다. 예:

location / {
    proxy_pass http://upstream_server/;
    more_clear_headers 'Access-Control-Allow-Origin';
}

https://www.nginx.com/resources/wiki/modules/headers_more/

답변3

타사의 "Headers More" 모듈을 사용해 볼 수도 있습니다.

https://github.com/openresty/headers-more-nginx-module

그리고 다음과 같은 내용이 있습니다.

load_module modules/ngx_http_headers_more_filter_module.so;

http {
    ...
    more_clear_headers 'X-Frame-Options';
    ...
}

답변4

사용하여Nginx 루아 모듈.

패키지를 설치 해야 합니다 nginx-extras. 예를 들어 적성에서는 apt install nginx-extras.

안에 nginx.conf:

load_module /usr/lib/nginx/modules/ndk_http_module.so;
load_module /usr/lib/nginx/modules/ngx_http_lua_module.so;

http {
  ...

  header_filter_by_lua_block {
    ngx.header["server"] = nil
  }
}

실행을 확인하려면 nginx -V가 표시됩니다 http-lua. 모듈을 로드하는 데 ndk_http_module.so필요합니다 ngx_http_lua_module.so.

nginx -t항상 구성을 확인하기 위해 실행하는 것이 가장 좋습니다 .

관련 정보