实现 Nginx 请求压缩可以大大减少网络传输时间和带宽使用,提高网站性能。Nginx 支持动态压缩和静态压缩两种方式来实现请求压缩,下面是详细的实现攻略。
动态压缩
动态压缩指的是在 Nginx 服务器上动态生成页面时,将页面内容压缩后返回给客户端浏览器。常用的压缩方式包括 Gzip 和 Brotli。
第一步:安装压缩模块
首先需要在 Nginx 上安装压缩模块,以支持压缩功能。可以通过以下命令安装:
sudo apt-get install nginx-extras
第二步:启用压缩
在 Nginx 的配置文件中,启用 gzip 压缩功能。如下:
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;
在上述配置中,gzip on
启用 gzip 压缩功能,gzip_vary on
设置响应头中包含 Vary: Accept-Encoding,告诉缓存服务器对不同的请求返回不同的数据,gzip_proxied any
表示不使用缓存,任何响应都会被压缩,gzip_comp_level
设置压缩级别,范围为 1-9;
gzip_buffers 16 8k
设置缓冲区大小,gzip_http_version 1.1
针对的 http 协议版本,gzip_types
设置要压缩的文件类型,以空格或逗号分隔。
第三步:检查压缩
启用压缩功能后,可以通过浏览器的开发者工具检查压缩是否生效。在 Network 标签页的 Response Headers 中,查看 Content-Encoding,如果是 gzip 或 br,表示压缩成功。
示例说明:
以下是使用 Nginx 实现动态压缩的配置示例:
server {
listen 80;
server_name example.com;
gzip on;
gzip_comp_level 2;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
root /var/www/html;
location / {
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php-fpm.sock;
}
}
与上述配置类似,也可以使用 Brotli 算法进行压缩,只需要在配置文件中将 gzip 改为 brotli 并设置相应参数即可。
静态压缩
静态压缩指的是在 Nginx 静态文件服务器上,通过压缩静态文件来减少带宽使用和传输时间,常用的压缩方式包括 Gzip 和 Brotli。
第一步:安装压缩模块
首先需要在 Nginx 上安装压缩模块,以支持压缩功能。可以通过以下命令安装:
sudo apt-get install nginx-extras
第二步:启用压缩
在 Nginx 的配置文件中,启用 gzip 压缩功能。如下:
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;
上述配置参数可以参考动态压缩中的说明。
第三步:压缩静态文件
使用 Nginx 提供的 gzip_static 模块,可以对静态文件进行压缩。该模块默认会在静态文件目录下查找同名的 .gz 文件并返回给客户端。
例如,请求 style.css 文件时,Nginx 会先查找是否存在 style.css.gz 文件,如果存在则返回给客户端浏览器,否则返回原始的 style.css 文件。
使用 Nginx 压缩静态文件需要注意的是:在压缩之前,需要在服务器端将静态文件进行压缩并存储为 .gz 文件。
示例说明:
以下是 Nginx 实现静态文件压缩的配置示例:
server {
listen 80;
server_name example.com;
root /var/www/html;
gzip on;
gzip_static on;
gzip_comp_level 2;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
location /static/ {
gzip_static on;
include /etc/nginx/fastcgi_params;
add_header Cache-Control "public, max-age=31536000, immutable";
}
}
使用上述配置,Nginx 会在 /static/ 目录下查找同名的 .gz 文件并返回给客户端浏览器,同时设置缓存策略为 public, max-age=31536000, immutable。
除了 gzip_static 模块,也可以使用 brotli_static 模块实现静态文件的压缩,只需要将 gzip 改为 brotli 并设置相应参数即可。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Nginx 请求压缩的实现(动态压缩,静态压缩) - Python技术站