4

为了减轻 BREACH 攻击,我希望仅在$http_referer' 的主机名与我的服务器名称之一匹配时选择性地启用 gzip。

我该怎么做?我尝试使用valid_referers server_names;,但似乎 nginx 不允许gzip on内部 if 语句。当我将其包含在我的 conf 中时:

valid_referers server_names;

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

我明白了[emerg] "gzip" directive is not allowed here。必须是一种选择性地启用 gzip 的方法。

4

1 回答 1

1

nginx 文档指定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; 
    }
  }
}
于 2019-05-07T21:35:40.217 回答