拥有一个服务器块,应该为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/
,只能在内部使用重写和返回语句答案 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
所以你必须将你的服务器分成两部分。但是,由于你的其他东西很常见,你可以将所有东西放在一个包含文件中。在两个服务器位置包含该文件