nginx 正则

在Nginx配置中,正则表达式用于精确匹配URI,以便根据不同的请求路径执行不同的操作。以下是一些常见的正则表达式用法:

  1. ~ 区分大小写的正则匹配。

  2. ~* 不区分大小写的正则匹配。

  3. ^~ 表示非正则匹配,如果该选项匹配,则不再进行正则匹配。

  4. = 表示精确匹配。

  5. @ 定义命名location区段,通常用于内部重定向。

  6. !~ 区分大小写的正则不匹配。

  7. !~* 不区分大小写的正则不匹配。

  8. ^ 匹配输入字符串的起始位置。

  9. $ 匹配输入字符串的结束位置。

  10. * 匹配前面的字符零次或多次。

  11. + 匹配前面的字符一次或多次。

  12. 匹配前面的字符零次或一次。

  13. \d 匹配纯数字。

  14. \w 匹配字母或数字或下划线或汉字。

  15. \s 匹配任意的空白符。

  16. \b 匹配单词的开始或结束。

  17. {n} 重复 n 次。

  18. {n,} 重复 n 次或更多次。

  19. [abc] 匹配单个字符 c。

  20. [a-z] 匹配 a-z 小写字母的任意一个。

  21. [a-zA-Z0-9] 匹配所有大小写字母或数字。

  22. () 表达式的开始和结束位置。

  23. | 或运算符。

例如,以下配置展示了如何使用正则表达式:

server {
    listen 80;
    server_name example.com;

    location = /favicon.ico {
        # 处理/favicon.ico的请求
    }

    location ^~ /images/ {
        # 匹配任何以/images/开头的请求,并停止搜索其他正则location
    }

    location ~* \.(gif|jpg|jpeg)$ {
        # 匹配任何以.gif、.jpg 或.jpeg结尾的请求
    }

    location @rewrite {
        # 定义命名location,用于内部重定向
    }
}

在这个配置中,location = /favicon.ico 用于精确匹配请求的URI为/favicon.icolocation ^~ /images/ 用于匹配所有以/images/开头的请求,并停止搜索其他正则locationlocation ~* \.(gif|jpg|jpeg)$ 用于匹配所有以.gif.jpg.jpeg 结尾的请求,而location @rewrite 用于定义命名location,通常用于内部重定向。

希望这些信息能帮助你理解Nginx中的正则表达式用法

Top