,location ~* \.(html|htm)$ {, gzip on;, gzip_min_length 1024;, gzip_vary on;, expires 30d;,},
``,,这段代码将启用HTML文件的Gzip压缩,并设置缓存过期时间为30天。Nginx 是一个非常强大的 HTTP 服务器和反向代理服务器,通过配置可以实现静态页面压缩和缓存过期时间,以下是详细的设置方法:
Nginx 设置静态页面压缩
1. 安装ngx_http_gzip_module
模块
在编译 Nginx 时需要启用ngx_http_gzip_module
模块,如果你使用的是预编译的 Nginx 包,请确认该模块已启用。
检查 ngx_http_gzip_module 是否已经加载 nginx -V 2>&1 | grep -'--with-http_gzip_module'
2. 编辑 Nginx 配置文件
找到并打开 Nginx 配置文件(通常位于/etc/nginx/nginx.conf
或/usr/local/nginx/conf/nginx.conf
)。
sudo nano /etc/nginx/nginx.conf
3. 添加 Gzip 压缩配置
在http
块中,添加以下配置来开启 Gzip 压缩功能:
http { ... gzip on; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; # 禁用对特定 MIME 类型的压缩 gzip_disable "msie6"; }
参数解释:
参数 | 说明 |
gzip on | 启用 Gzip 压缩 |
gzip_vary on | 启用 vary: Accept-Encoding 头 |
gzip_proxied any | 启用对所有请求的压缩 |
gzip_comp_level 6 | 设置压缩级别(1-9) |
gzip_buffers 16 8k | 设置压缩缓冲区大小 |
gzip_http_version 1.1 | 仅对 HTTP/1.1 版本的请求进行压缩 |
gzip_types | 设置哪些 MIME 类型需要进行压缩 |
gzip_disable "msie6" | 禁止对 IE6 浏览器进行压缩 |
Nginx 设置缓存过期时间
1. 编辑 Nginx 配置文件
同样,找到并打开 Nginx 配置文件。
sudo nano /etc/nginx/nginx.conf
2. 添加缓存控制配置
在server
或location
块中,添加以下配置来设置缓存过期时间:
server { ... location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 30d; add_header Cache-Control "public, no-transform"; } }
参数解释:
参数 | 说明 | ||||||
location ~ | 使用正则表达式匹配文件类型 | ||||||
\.(jpg | jpeg | png | gif | ico | css | js)$ | 匹配指定的静态文件扩展名 |
expires 30d | 设置缓存过期时间为 30 天 | ||||||
add_header | 添加额外的 HTTP 头信息 | ||||||
"public, no-transform" | 指定缓存策略为公共缓存,且不进行内容转换 |
相关问题与解答
Q1: 如果我希望只对某些特定的 URL 路径应用 Gzip 压缩,应该如何配置?
A1: 你可以在location
块中单独配置 Gzip,
location /specific-path/ { gzip on; gzip_vary on; gzip_comp_level 6; gzip_types text/plain text/css application/json application/javascript; }
这样只有访问/specific-path/
路径的资源才会被压缩。
Q2: 如何验证 Nginx 是否正确应用了缓存控制头?
A2: 你可以使用curl
命令或者浏览器的开发者工具来检查响应头,使用curl
:
curl -I http://yourdomain.com/somefile.js
查看返回的 HTTP 响应头中是否包含Expires
和Cache-Control
字段,以及它们的值是否符合预期。
以上内容就是解答有关“Nginx设置静态页面压缩和缓存过期时间的方法”的详细内容了,我相信这篇文章可以为您解决一些疑惑,有任何问题欢迎留言反馈,谢谢阅读。