| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 14、nginx的正则表达式名称-(server_name为正则表达式) -> 正文阅读 |
|
[系统运维]14、nginx的正则表达式名称-(server_name为正则表达式) |
官网:Server names 翻译部分:?Regular expressions names 开始!
?nginx用的正则表达式和那些被PCRE用的正则表达式是可共用的。
?为了用正则表达式,server_name的参数必须以~开头。 server_name ~^www\d+\.example\.net$; ?可以看到,~和参数之间不需要加空格。
?否则它将会被视为确切的名称,或者如果表达式包含星号,它会被视为通配符名称。
??不要忘记设置^和$锚点。
?它们不是语法上需要的,而是语法上需要的。
?同时也要记得域名点要用反斜杠转义 ,例如: \.
?包含{和}的正则表达式应该被""包围,如下: server_name "~^(?<name>\w\d{1,3}+)\.example\.net$";
否则,nginx会启动失败并展示错误信息,错误信息如下:? directive "server_name" is not terminated by ";" in ...
?在正则表达式中?<>包围的名字(如下的domain)可以稍后在后面作为一个变量来使用。 server { server_name ~^(www\.)?(?<domain>.+)$; location / { root /sites/$domain; } }
PCRE库支持使用以下语法的命名捕获:?
如果nginx启动失败并展示一下错误信息:? pcre_compile() failed: unrecognized character after (?< in ...?
这意味着PCRE库是旧版的,应该用?P<name>试试。?
?捕获也可以用数字形式使用: server { server_name ~^(www\.)?(.+)$; location / { root /sites/$2; } } $2表示正则表达式匹配到的第2个参数?, 如果匹配到www.example.com,那$2就是example.com。 ~^(www\.)?(.+)$解释: 1.~表示这是一个正则表达式 2.^表示以后面匹配的内容开头 3.(www\.)表示匹配www.,结合^就是匹配以www.开头的字符串 4.?表示前面的子表达式匹配最多1次,结合上面是:只能匹配www.0次或1次 5.(.+)表示匹配单个字符至少1次,.表示匹配除换行符 \n 之外的任何单字符,+表示匹配1次或多次 6.$表示以前面匹配的字符串结尾?
然而,这种用法应该只限于简单的情况,因为数字引用很容易被覆盖。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/25 1:50:32- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |