仅对nginx上的https连接禁用gzip压缩

时间:2017-08-25 08:38:13

标签: nginx https server

拥有一个服务器块,应该为http和https提供内容:

server {
  listen 80;
  listen [::]:80;
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  include snippets/certificate.conf;
  include snippets/ssl-params.conf;
  root ...
}

是否可以仅为同一服务器块中的https连接配置gzip压缩,或者我是否必须将它们搞砸?

修改

实际上可以检查位置块内的请求方案,如果等于https,则将gzip设置为off:

server {
  listen 80;
  listen [::]:80;
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  include snippets/certificate.conf;
  include snippets/ssl-params.conf;

  location / {
      if ($scheme = "https") {
          gzip off;
      }
      try_files $uri $uri/ =404;
  }

  ...
}

问题似乎是安全的,如果阻止https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/

,只能在内部使用重写返回语句

1 个答案:

答案 0 :(得分:1)

嗯,这是不可能的

  

语法:gzip on |关;

     

默认值:

     

gzip off;

     

上下文:http,服务器,位置,如果在位置

如您所见,它只能在这些块http, server, location, if in location中使用。并且它不允许任何值的参数

nginx: [emerg] invalid value "$gzip_flag" in "gzip" directive, it must be "on" or "off" in /usr/local/openresty/nginx/conf/nginx.conf:15

所以你必须将你的服务器分成两部分。但是,由于你的其他东西很常见,你可以将所有东西放在一个包含文件中。在两个服务器位置包含该文件