nginx.conf

nginx.conf

私は、すべてのプロキシの場所で返されるように、サーバーにいくつかのセキュリティ関連のヘッダーを追加する Nginx プロキシ セットアップを持っています。一部の場所では追加のヘッダー (例: Content-Security-Policyto /) を追加する必要がありますが、他の特定の場所では、サーバー レベルで追加されたヘッダーの 1 つ (例: X-Frame-Optionsfrom /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応答内に既に存在するヘッダーを置き換えたい場合は、値 (サーバーからの値と追加した値) がスタックされるため、それだけでは不十分です。

これを 2 つの手順で実行する必要があります。

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 Lua モジュール

パッケージをインストールする必要がありますnginx-extras。たとえば、aptitude で を実行します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構成を確認するためにも、常に を実行するのが最善です。

関連情報