为什么在这种情况下 nginx proxy_hide_headers 指令不起作用?

为什么在这种情况下 nginx proxy_hide_headers 指令不起作用?

我有一个像这样的 nginx 服务器块,并且我试图使用指令proxy_hide_header来隐藏Content-Security-Policy来自代理服务器的响应标头,因为我没有在本地环境中运行 SSL 服务器,因此该标头导致的强制升级没有帮助。

server {
    include conf.d/environment.conf;
    listen       80;
    server_name  ~^app.*\.acme\..*;

    location / {
        proxy_hide_header "Content-Security-Policy";
        proxy_pass $app_endpoint$uri$is_args$args;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
    }    
}

如果我使用 curl 测试 nginx 代理:

curl -s -v http://app.acme.io/app/path/ >/dev/null

然后就会发生这样的事情:

> GET /app/path/ HTTP/1.1
> Host: app.acme.io
> User-Agent: curl/7.64.1
> Accept: */*
> 
< HTTP/1.1 200 
< Server: nginx
< Date: Tue, 02 Jun 2020 14:38:16 GMT
< Content-Type: text/html;charset=ISO-8859-1
< Content-Length: 4231
< Connection: keep-alive
< X-Frame-Options: SAMEORIGIN
< X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
< Content-Security-Policy: upgrade-insecure-requests
< Referrer-Policy: strict-origin-when-cross-origin
< 

换句话说,该proxy_hide_header指令并未达到预期的效果。

[我知道显示的服务器块是正在处理的服务器块,因为它是唯一引用感兴趣的代理服务器的服务器块,并且我知道代理服务器是被点击的服务器。]

为什么proxy_hide_header在这种情况下该指令不起作用?

相关内容