### [VPS上Nginx配置优化:Gzip压缩、缓存策略和并发连接调优](https://www.jiyueip.com/article/13593) **Published:** 2026-07-30T09:50:36 **Author:** 斑斓助理 **Excerpt:** Nginx默认配置能跑,但远不是最优——没有开启Gzip压缩浪费带宽、没有文件缓存每次请求都读磁盘、并发连接数默认只有512在高流量下不够用。花十分钟调几个关键参数,性能和用户体验有明显提升。 开启Gzip压缩——最直接的提速 网页的HTM Nginx默认配置能跑,但远不是最优——没有开启Gzip压缩浪费带宽、没有文件缓存每次请求都读磁盘、并发连接数默认只有512在高流量下不够用。花十分钟调几个关键参数,性能和用户体验有明显提升。 ## 开启Gzip压缩——最直接的提速 网页的HTML/CSS/JS在传输前先压缩,浏览器收到后解压再渲染。压缩率通常50-70%——一个100KB的HTML压缩后只有30KB,用户下载快一倍。在nginx.conf的http块里加: ``` gzip on; gzip_vary on; gzip_comp_level 6; # 1-9,6是性能和压缩率的最佳平衡 gzip_min_length 256; # 小于256字节的文件不压缩(太小压缩反而慢) gzip_types text/plain text/css text/javascript application/json application/javascript text/xml application/xml text/html; # 不要压缩图片和视频——它们已经被压缩过了再压一次浪费CPU ``` 验证:打开网页→F12→Network→看Response Headers里有Content-Encoding: gzip。如果没有说明Gzip没生效。 ## 浏览器缓存——把静态文件存在用户本地 CSS/JS/图片这些文件很少变,没必每次访问都重新下载。告诉浏览器”这个文件可以缓存多久”: ``` location ~* .(css|js|jpg|jpeg|png|gif|ico|woff2|svg)$ { expires 30d; # 缓存30天 add_header Cache-Control "public, immutable"; add_header X-Content-Type-Options "nosniff"; } # HTML文件不缓存或短缓存(内容会变) location ~* .html$ { expires 1h; add_header Cache-Control "public"; } ``` immutable告诉浏览器”这个文件不会变,过期之前别来问我”——省掉了重新验证的往返请求。如果文件更新了,给它起个新名字(比如style.v2.css)绕过缓存。 ## 并发连接优化 Nginx默认 worker\_connections 512——单worker最多同时处理512个连接。双核VPS开2个worker × 512 = 1024并发,小网站够用但中型网站晚高峰可能不够。 ``` # /etc/nginx/nginx.conf worker_processes auto; # 自动检测CPU核心数 worker_connections 1024; # 每个worker的连接数 multi_accept on; # 一次接受多个连接 events { use epoll; # Linux下最高效的事件模型 worker_connections 1024; } ``` 另外系统级别的文件描述符限制也要调:echo “\* soft nofile 65536” >> /etc/security/limits.conf。默认1024的连接限制就是因为系统只开了这么多个文件句柄。 ## Keep-Alive设置 Keep-Alive让浏览器和服务器之间复用同一个TCP连接发多个请求,不用每次都TCP三次握手: ``` keepalive_timeout 65; # 连接保持65秒 keepalive_requests 100; # 一个连接最多处理100个请求 ``` 65秒是合理的——太短用户还没加载完下个页面连接就断了,太长占用服务器资源。 ## 限制请求速率防滥用 防止某个IP疯狂刷请求拖慢服务器: ``` # 在http块定义限制区域 limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s; # 在需要限制的location块里 location /api/ { limit_req zone=api_limit burst=20 nodelay; } ``` rate=10r/s每秒10个请求。burst=20允许瞬间突发20个请求(超过的直接返回503)。nodelay让突发请求不排队等待。 雨云VPS基础就够跑这些Nginx优化——CPU配置不需要高,Nginx优化主要在配置层面不涉及硬件。优惠码 **admin01** 首月五折。 ## 优化前后效果检查清单 1. Gzip生效:Response Headers里看到Content-Encoding: gzip 2. 缓存生效:第二次访问相同文件返回304 Not Modified 3. 并发数够:nginx -T | grep worker\_connections确认值已改 4. HTTPS TLS版本:ssl\_protocols TLSv1.2 TLSv1.3禁用老旧协议 5. 用PageSpeed Insights或Lighthouse测网站加载分,改前后对比 ## 常见问题 ### Gzip压缩后会增加CPU负担吗? 会,但通常可忽略。gzip\_comp\_level 6的CPU开销约增加1-3%——带宽节省远大于CPU开销。1核VPS上跑gzip完全没问题除非同时处理几百个并发压缩请求。 ### 改了Nginx配置需要重启吗? 用nginx -t先检查语法正确性。没问题用systemctl reload nginx(不是restart)——reload平滑重载不中断现有连接,restart会断开所有连接。 ### 缓存设了30天,更新了文件用户看不到新版本? 文件更新后改文件名——style.css改成style.v2.css或style.css?ver=2.0(加查询参数)。浏览器会当它是新文件重新下载。或者降低缓存时间为1天。 **Tags:** 云服务器, 网站运维 **Categories:** 行业洞察 ---