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

时间:2016-02-20 11:38:12

标签: nginx http-referer breach-attack

为了减轻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 个答案:

答案 0 :(得分:1)

nginx documentation指定在以下情况下允许使用gzip选项

  

Context: 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; 
    }
  }
}