我在 nginx 上有一个反向代理,它代理了很多站点。我最近为所有启用 SSL 的网站启用了 HTTP Strict Transport Security。我现在有一个不想启用此功能的站点。
我想我会做一个简单的检查,如果我的上游已经给我发送了一个Strict-Transport-Security-header,如果没有,就添加一个。这样,我的上游可以发送包含max-age=0避免代理启用 HSTS的 STS 标头。
我以为我只需按如下方式更改我的配置:
location / {
proxy_pass http://webservers;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto "https";
if ($upstream_http_strict_transport_security = "") {
add_header Strict-Transport-Security "max-age=15552000";
}
}
Run Code Online (Sandbox Code Playgroud)
但是,可能是因为if 是 evil,这不起作用。我尝试了很多不同的方法来确保变量确实存在(就是这种情况),但似乎没有任何帮助。
我怎么能让这个工作?