Nginx:根据引荐主机名有选择性地启用压缩

4
为了缓解BREACH攻击,我想只在$http_referer的主机名与我的服务器名称之一匹配时选择性地启用gzip。
我该怎么做?我尝试使用valid_referers server_names;,但似乎nginx不允许在if语句中使用gzip on。当我将其包含在我的conf中时:
valid_referers server_names;

if ($invalid_referer = "") {
    gzip on;
    gzip_vary on;
}

我收到了 [emerg] "gzip" directive is not allowed here 的错误提示。必须有一种方法可以选择性地启用gzip。

1个回答

1

nginx文档指定gzip选项允许在以下上下文中使用:

上下文:http、server、location、if in location

这意味着您需要将gzip开关包装在location块内。

gzip  off;

server {
  listen 80; 
  server_name localhost;
  valid_referers server_names;

  location / { 
    root /var/www/;
    index index.html index.htm;

    if ($invalid_referer = "") {
       gzip on; 
    }
  }
}

1
然而,在位置上下文中使用 if 存在问题:https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/ - sauerburger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接