news 2026/9/3 0:14:57

HoRain云--Nginx中的正则表达式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HoRain云--Nginx中的正则表达式

🎬 HoRain云小助手:个人主页

🔥 个人专栏: 《Linux 系列教程》《c语言教程》

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

专栏介绍

专栏名称

专栏介绍

《C语言》

本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。

《网络协议》

本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制!

《docker容器精解篇》

全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。

《linux系列》

本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。

《python 系列》

本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。

《试题库》

本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等)

目录

⛳️ 推荐

专栏介绍

Nginx正则表达式:从菜鸟到规则巫师的进阶指南

🌟 为什么Nginx正则表达式这么重要?

🔍 Nginx正则匹配的"四大金刚"

📜 正则表达式基础符号速查

🧪 实战案例:让正则表达式"活"起来

1. 静态资源优化(图片缓存)

2. URL重写(旧URL到新URL)

3. 域名迁移(旧域名跳转新域名)

4. IP访问控制(仅允许特定IP)

⚠️ 重要注意事项

💡 我的小经验

📚 总结


Nginx正则表达式:从菜鸟到规则巫师的进阶指南

嘿!看到你对Nginx正则表达式感兴趣,太棒了!我最近也在研究这个"服务器魔法",正好来给你分享一下我的心得。别被那些"^"、"$"符号吓到,掌握了它,你就能像魔法师一样操控Nginx,让网站配置变得游刃有余!

🌟 为什么Nginx正则表达式这么重要?

想象一下,你面对这些场景:

"那个该死的爬虫,天天来扫我的后台登录页面,日志都爆了!" "我的网站换了新版,旧URL一大堆,怎么让用户无感跳转到新地址?" "我想只允许某个特定目录下的图片被外部引用,其他的统统拦截!"

这时候,正则表达式就是你的"瑞士军刀"!掌握了它,你就能轻松解决这些头疼的问题。

🔍 Nginx正则匹配的"四大金刚"

Nginx中,正则表达式主要通过location指令使用,关键看这四个匹配符号:

匹配符号说明例子
=精确匹配,完全匹配location = /login { ... }
^~前缀匹配,匹配到就不再尝试正则location ^~ /images/ { ... }
~区分大小写的正则匹配location ~ \.php$ { ... }
~*不区分大小写的正则匹配location ~* \.jpg$ { ... }

💡 小贴士:匹配优先级是:=>^~>~/~*> 普通前缀匹配

📜 正则表达式基础符号速查

符号说明示例
^匹配行的开头^/api匹配以/api开头的请求
$匹配行的结尾\.jpg$匹配以.jpg结尾的文件
.匹配任意单个字符a.c匹配abcaac
*前面字符0次或多次a*匹配aaaaaa
+前面字符1次或多次a+匹配aaaaaa等(不匹配空)
?前面字符0次或1次colou?r匹配colorcolour
[]匹配方括号内的任意一个字符[abc]匹配abc
[^]匹配不在方括号内的字符[^abc]匹配除abc外的字符
``或运算符
()分组(\d+)匹配数字并捕获

🧪 实战案例:让正则表达式"活"起来

1. 静态资源优化(图片缓存)

location ~* \.(jpg|jpeg|png|gif)$ { root /data/www; expires 30d; # 缓存30天 }

说明:匹配所有图片文件,设置30天缓存,减少重复请求。

2. URL重写(旧URL到新URL)

location /old/ { rewrite ^/old/(.*)$ /new/$1 permanent; }

说明:将/old/xxx重写为/new/xxx,301永久重定向。

3. 域名迁移(旧域名跳转新域名)

if ($host = 'old.com') { rewrite ^/(.*)$ http://new.com/$1 permanent; }

说明:将所有来自old.com的请求重定向到new.com

4. IP访问控制(仅允许特定IP)

set $allow false; if ($remote_addr = "192.168.1.1") { set $allow true; } if ($allow = false) { rewrite ^ /deny.html; }

说明:仅允许IP为192.168.1.1的访问,其他跳转到拒绝页。

⚠️ 重要注意事项

  1. 优先级规则:Nginx匹配时,优先级是=>^~>~/~*> 普通前缀匹配

  2. 性能考量:正则匹配比前缀匹配更耗性能,能用^~就别用~,能用普通匹配就别用正则

  3. 调试建议

  4. rewrite的flag

💡 我的小经验

刚开始用正则时,我也经常被"匹配不到"或"匹配太广"困扰。后来我总结了几条经验:

  1. 先写简单,再优化:先用前缀匹配,再用正则,逐步细化
  2. 多用测试:用curl -I http://yourdomain.com/test测试匹配
  3. 善用工具:在regex101.com上测试表达式,确认匹配效果
  4. 别怕犯错:Nginx配置出错时,nginx -t会告诉你问题所在

🌟终极小贴士:记住,正则表达式不是魔法,而是工具。用对了,它能让你的Nginx配置如虎添翼;用错了,它会让你的服务器"冒烟"。所以,先从简单开始,慢慢积累经验!

📚 总结

Nginx正则表达式是配置的"高级技能",掌握它需要:

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/26 14:34:06

从源码构建Cortex-A专用交叉编译工具链完整示例

手把手构建Cortex-A专用交叉编译工具链:从零开始的实战指南你有没有遇到过这种情况——在为一块基于Cortex-A53的嵌入式板子开发程序时,系统自带的gcc-arm-linux-gnueabihf编译出来的代码运行异常?或者想启用NEON SIMD优化提升图像处理性能&a…

作者头像 李华
网站建设 2026/9/2 21:41:13

17、Elasticsearch 运行时分配更新与低级别索引控制

Elasticsearch 运行时分配更新与低级别索引控制 1. 运行时分配更新 在 Elasticsearch 集群运行时,除了在 elasticsearch.yml 文件中设置属性外,还可以使用更新 API 实时更新这些设置。 1.1 索引级别更新 要更新给定索引(如 mastering 索引)的设置,可以运行以下命令…

作者头像 李华
网站建设 2026/9/2 21:40:25

3个月稳定上线!金仓数据库助力政务平台实现Oracle国产化转型

3个月稳定上线!金仓数据库助力政务平台实现Oracle国产化转型 导语 作为服务多个省级政务系统的ISV,我们曾因Oracle高昂的维保成本与等保合规压力举步维艰——年均支出超千万元,一次补丁更新竟导致系统停机6小时。直到携手金仓数据库&#xf…

作者头像 李华
网站建设 2026/9/3 0:01:31

20、Elasticsearch配置与缓存机制详解

Elasticsearch配置与缓存机制详解 一、集群配置示例 假设我们有一个由四个Elasticsearch节点组成的集群,现在要为整个集群配置限流。默认情况下,我们希望每个节点的合并操作每秒处理的数据不超过50兆字节,因为这样的操作不会影响搜索性能。 操作步骤如下: 1. 为整个集群…

作者头像 李华
网站建设 2026/9/2 22:49:43

24、Elasticsearch 存储库配置与联邦搜索详解

Elasticsearch 存储库配置与联邦搜索详解 在数据管理和搜索场景中,Elasticsearch 提供了丰富的功能来满足不同的需求。本文将详细介绍 Elasticsearch 的存储库配置,包括 S3、HDFS、Azure 等存储库,以及联邦搜索中的部落节点相关内容。 1. S3 存储库配置 S3 存储库在 Elas…

作者头像 李华