https nginx 配置教程,nginx配置https证书
- 虚拟主机
- 2026-06-01
- 4612
在Nginx配置中,性能优化与安全加固的核心在于精准的资源分配、合理的缓存策略以及严格的访问控制,对于高并发场景,盲目增加worker进程数或开启复杂的SSL会话复用往往适得其反,真正的优化应聚焦于连接保持、静态资源缓存层级以及动态内容的反向代理效率,通过结合现代云原生架构,如西西云提供的弹性负载均衡与边缘加速服务,可以进一步降低源站压力,实现毫秒级的响应速度。
核心配置原则:资源与并发
Nginx的性能基石在于worker_processes与worker_connections的合理设定,多数新手错误地将worker_processes设为固定最大值,这会导致CPU上下文切换开销剧增。
最佳实践是将其设置为auto,让Nginx自动检测CPU核心数。 每个worker进程独立运行,避免锁竞争,对于worker_connections,需根据服务器内存和文件描述符限制(ulimit -n)进行计算,一般建议单worker连接数在1024至4096之间,若需更高并发,应通过增加worker数量而非单进程连接数来解决。
开启sendfile和tcp_nopush是提升静态文件传输效率的关键。sendfile允许内核直接将文件数据从磁盘复制到网络缓冲区,绕过用户空间;tcp_nopush则确保在发送HTTP响应头后,紧接着发送文件数据,减少网络包碎片化。

缓存策略:动静分离的艺术
静态资源(图片、CSS、JS)的缓存配置直接影响用户首屏加载速度,Nginx的expires指令和Cache-Control头管理是重中之重。
对于长期不变的静态资源,设置expires 30d;并配合版本化文件名,可极大减少回源请求。 对于动态API接口,则应禁用缓存或设置极短的no-cache,以确保数据实时性。
在西西云的实际部署案例中,我们曾遇到一个电商客户,其源站带宽在促销期间经常满载,通过Nginx配置,我们将商品详情图、样式表等静态资源交由西西云边缘节点缓存,源站仅处理订单API,配置如下:

这一改动使得源站带宽压力降低了80%,用户访问速度提升显著。
安全加固:防御与访问控制
安全配置不仅是防火墙的事,Nginx层面也能有效拦截常见攻破。限制请求频率、隐藏版本号、禁止非法方法访问是基础三步。
使用limit_req_zone和limit_req模块可以有效抵御cc攻破。 限制单个IP每秒最多发起5次请求,超出则返回503错误,务必通过server_tokens off;隐藏Nginx版本号,防止攻破者利用特定版本漏洞。
http { limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s; server { server_tokens off; location /api/ { limit_req zone=one burst=10 nodelay; proxy_pass http://backend; } } }
强制HTTPS并重定向HTTP是标配,使用return 301 https://$host$request_uri;确保所有流量加密传输,对于SSL配置,推荐使用强加密套件,并启用OCSP Stapling以加速证书验证过程。

动态代理与健康检查
对于后端应用,Nginx作为反向代理,其配置直接影响业务稳定性。合理设置超时时间和重试机制,能避免雪崩效应。
proxy_connect_timeout、proxy_read_timeout和proxy_send_timeout应根据业务特性精细调整。 默认值往往过长,导致客户端长时间等待,建议将连接超时设为5-10秒,读取超时设为30-60秒。
在西西云的混合云架构中,我们常结合Nginx与后端健康检查模块,当后端节点不可用时,Nginx会自动剔除该节点,确保流量只路由到健康实例,这种机制配合西西云的自动扩缩容能力,实现了业务的高可用性。
upstream backend { server 192.168.1.10:8080; server 192.168.1.11:8080; keepalive 32; } server { location / { proxy_pass http://backend; proxy_connect_timeout 5s; proxy_read_timeout 30s; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503; } }
常见问题解答
Q1: Nginx配置中keepalive指令到底设多少合适?
A: keepalive值取决于并发连接数和后端处理能力,一般建议设置为worker_processes * worker_connections的10%-20%,过高会增加内存占用,过低则频繁建立连接,增加延迟,需通过压测工具(如wrk)观察连接复用率进行调整。
Q2: 如何判断Nginx配置是否优化到位?
A: 主要看三个指标:QPS(每秒查询率)、响应时间(RT)和错误率,使用Nginx自带的stub_status模块监控活跃连接,结合APM工具分析后端耗时,若CPU使用率均衡且无大量502/504错误,说明配置基本合理。
互动环节
您在使用Nginx配置时遇到过哪些棘手的性能瓶颈?或者对西西云的云产品集成有何疑问?欢迎在评论区留言,我们将邀请资深架构师为您解答。