我遇到nginx 1.13.3(作为docker容器运行)和gzip压缩内容的问题。服务器未发送压缩文件。搜索和反复试验的小时数无法解决此问题:
我的期望:
我配置以下(或与js文件匹配的其他位置块):
if ($uri = "/main.js") {
add_header Content-Encoding gzip;
}
这为文件提供了完整的1,2 MB且没有Content-Encoding标头。浏览器(在本例中为Firefox,但也在Chrome中)发送以下请求标头:
User-Agent "Mozilla/5.0 (Windows NT 10.0;… Gecko/20100101 Firefox/54.0"
Accept "*/*"
Accept-Language "en,de;q=0.7,en-US;q=0.3"
Accept-Encoding "gzip, deflate"
Connection "keep-alive"
Pragma "no-cache"
Cache-Control "no-cache"
回复标题:
Server "nginx/1.13.3"
Date "Mon, 24 Jul 2017 19:35:01 GMT"
Content-Type "text/plain"
Last-Modified "Mon, 24 Jul 2017 19:06:10 GMT"
Connection "keep-alive"
Etag "\"59764522-53db0\""
Accept-Ranges "bytes"
Content-Length "1281624"
但请求日志显示压缩文件的内容长度:
GET /main.js HTTP/1.1" 200 343472
我也尝试过使用“gzip on”的ad-hoc压缩和带有未压缩文件的相应文件类型,但这也不起作用。
完整的nginx.conf:
events {
worker_connections 1024;
}
http {
server {
listen 80;
server_name localhost;
# gzip off;
#gzip_types text/plain application/javascript;
location / {
index index.html index.htm;
root /usr/share/nginx/html;
add_header X-URI $uri;
if ($uri = "/main.js") {
add_header Content-Encoding gzip;
}
}
}
}
也许有人知道我做错了什么。我曾经多次使用nginx配置这样的gzip压缩,而且它总能工作....
谢谢!