avatar

Wz Blog

运维学习・持续更新

  • 首页
  • 文章
  • 登录/注册
  • 管理后台
主页 Nginx的优化思路和匹配优先级
文章

Nginx的优化思路和匹配优先级

发表于 2026-10-11 更新于 2026-10- 11
作者 Administrator
9~12 分钟 阅读

**▶ Nginx优化方案:**

**• 基础优化:**

▪ 使用最新稳定版本

▪ 选择合适的编译参数

减少不必要的模块可以提升Nginx启动速度和运行效率

**• 性能优化:**

▪ 调整worker进程:

默认worker_processes数量通常设置为CPU核心数:

worker_processes auto;

手动指定,如8核COU:

worker_processes 8;

worker_connections指定每个worker能同时处理的最大连接数

worker_connections 10240; #建议值:10240

▪ 开启高效事件模型:

events {

use epoll; #linux推荐使用epoll(IO多路复用epoll)

worker_connections 1024

}

▪ 启用sendfile:

开启sendfile可以提高文件传输效率

sendfile on; #减少数据拷贝,提高传输效率。

tcp_nopush on; #减少网络包数量,提高吞吐量。

tcp_nodelay on; #减少TCP延迟,提高小数据包响应速度

▪ 增大缓存和缓冲区:

client_body_buffer_size 512k; #请求体缓冲区大小

client_header_buffer_size 32k; #普通请求头缓冲区大小

large_client_header_buffers 4 64k; #超大请求头缓冲区大小,分4个缓冲区,每个缓冲区64k

▪ 设定合理的Keepalive:

keepalive_timeout 65; #TCP连接保持时间,不宜过大过小

keepalive_requests 10000; #限制单个链接的最大请求数

**• 反向代理优化:**

▪ 配置缓存:

对于静态资源或可缓存的后端响应,可以使用proxy_cache:

/var/cache/nginx:缓存文件存放在服务器的这个目录下

levels=1:2 缓存文件分两级目录存放

(比如/var/cache/nginx/a/1b/xxx),防止单个目录文件太多导致性能下降

keys_zone=cache_zone:10m:定义10MB的缓存索引空间

max_size=1g:缓存最多占1G磁盘空间,满了就淘汰旧缓存

inactive=60m:60分钟内未使用的缓存将被清理

完整配置:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=cache_zone:10m max_size=1g inactive=60m;

server { #引用缓存

location / { #引用缓存

proxy_cache cache_zone; #引用上面定义的共享内存区域

proxy_cache_valid 200 302 10m; #对200/302状态码的响应,缓存10分钟

proxy_cache_valid 404 1m; #对404状态码的响应,只缓存1分钟

proxy_pass htto://backend; #反代理到后端服务器

}

}

▪ 启用gzip压缩:

gzip on;

gzip_comp_level 5; #压缩级别,推荐4~6之间

一般不压缩(磁盘够用),压缩级别过高会导致速度变慢

gzip_min_length 1024; #小于1KB的数据不压缩

▪ 限制请求速率:

防止DDoS或恶意攻击:

limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;

server { #rate=5r/s:限制每秒最多5个请求

location / {

limit_req zone=zone burst=10 nodelay;

} #burst=10:允许突发10个请求

}

tips:rate一般不会设置过低,会导致部分正常访问不了,一般会是在发现服务器被恶意攻击之后,设置rate值变小,迅速降低服务器负载

**• 负载均衡优化:**

▪ 选择合适的负载均衡算法

least_conn; #选择连接最少的服务器

▪ 开启HTTP/2:

server {

listen 443 ssl http2; #监听443端口,启用ssl加密、http2协议

ssl_certificate /etc/nginx/ssl/server.pem; #证书文件

ssl_certificate_key /etc/nginx/ssl/server.key; #私钥文件

**• 日志监控优化:**

▪ 关闭不必要的日志:

生产环境可以关闭access_log,仅保留error_log级别crit以上的错误

access_log off;

▪ 监控Nginx运行状态:

启用stub_status模块:

Nginx 会返回一份实时状态报告,告诉你当前服务器“忙不忙”、“处理了多少请求”。

server {

location /nginx_status {

stub_status on; #启用内置的状态统计模块

access_log off; #关闭访问日志记录

allow 127.0.0.1; #仅允许本机ip(127.0.0.1)访问

deny all; #拒绝所有其他IP的访问

}

}

**• 安全优化:**

▪ 隐藏Nginx版本信息:

server_tokens off;

▪ 限制请求方法:

if ($request_method !~^(GET|POST|HEAD)$) {

#依托开发需求配置

return 444; #444:直接关闭TCP连接,不发送任何响应

}

▪ 保护关键路径:

location ~^(wp-admin|admin|config){

deny all; 匹配以这些开头的所有请求,拒绝访问,返回403

}

**▶ 总结**

Nginx的优化:

1.使用最新版本

2.不需要的模块,不编译安装

3.worker_processes=cpu核心数

4.worker_connections 10240

5.开启高效事件模型

6.启用sendfile、tcp_nopush、tcp_nodelay

7.设定合理的Keepalive

8.配置代理缓存

9.合理配置gzip压缩等级

10.限制IP请求速率

11.使用http2

12.隐藏nginx的版本 deny掉admin页面访问

![](/upload/Image-xBUT.png)

**▶ Nginx的匹配优先级**

① =:精确匹配(最高优先级)

• 例子:location=/login

解释:只匹配/login,其他不匹配。

适用场景:登录页、固定API接口

② ^~前缀匹配(如果匹配,就不再检查正则)

• 例子:location ^~ /static/

解释:匹配以/static/开头的所有路径,不检查后面的正则规则。

适用场景:静态资源(图片、CSS、JS)

③ ~或~*正则匹配(按代码顺序匹配)

• ~:区分大小写 ~*:不区分大小写

解释:按照配置文件里的顺序匹配,先写的优先匹配。

适用场景:动态路由(比如根据URL后缀匹配不同后端)

④ /通用前缀匹配(最低优先级)

• 例子:location /

解释:匹配所有请求,但优先级最低,前面都没有匹配上才会匹配它。

适用场景:默认路由

**▶ 匹配顺序总结**

1.先检查 = 精确匹配 -------->命中就直接返回,不再往下找

2.再检查 ^~前缀匹配 ----------->命中就直接返回,不再检查正则

3.按顺序匹配正则------------->第一个匹配的正则生效

4.最后用 / 通用匹配----------->兜底(默认)

Web与网络
笔记 Nginx
许可协议:  CC BY 4.0
分享

相关文章

10月 11, 2026

Nginx问答题

▶ nginx工作原理: • Nginx核心架构:Master-Worker模型 ▪ Nginx启动后生成两类进程: 1.Master(主进程,管理员),不处理用户HTTP请求,管理所有Worker子进程 2.Worker(子进程,干活的),真正接受浏览器请求,处理请求,默认进程数=CPU核心数,W

10月 11, 2026

Nginx的优化思路和匹配优先级

**▶ Nginx优化方案:** **• 基础优化:** ▪ 使用最新稳定版本 ▪ 选择合适的编译参数 减少不必要的模块可以提升Nginx启动速度和运行效率 **• 性能优化:** ▪ 调整worker进程: 默认worker_processes数量通常设置为CPU核心数: worker_proce

10月 11, 2026

8.13 Nginx

• Nginx常用到的命令: ▪ nginx -s stop:快速关闭nginx,可能不保存相关信息,迅速终止web服务 ▪ nginx -s quit:平稳关闭nginx,保存相关信息,有安排的结束web服务 ▪ nginx -s reload:改变了nginx相关配置,需要重新加载 ▪ ngin

下一篇

Nginx问答题

上一篇

MGR三节点高可用集群

最近更新

  • Kubernetes v1.28.2 双Master堆叠etcd + Haproxy/Keepalived 高可用部署 SOP(Docker + cri-dockerd)
  • 名词解释
  • ECS 实例反复冻结 —— 故障根因分析报告
  • 运维六大工作内容
  • 磁盘相关命令

热门标签

监控 Linux 数据库 Docker 笔记 CI/CD Kubernetes Nginx

目录

©2026 Wz Blog. 保留部分权利。

使用 Halo 主题 Chirpy