Nginx server_name翻译
http://nginx.org/en/docs/http/server_names.html#regex_names
匹配优先顺序
- 精确名称,无通配符,无正则。
- 以星号开头的最长的通配符名称,例如"*.example.org"。
- 以星号结尾的最长的通配符名称,例如"mail.*"
- 第一个能匹配的正则表达式名称(按在配置文件中出现的顺序)。
含通配符的server_name
- 通配符只能在server_name的开头或结尾,且星号只能在"."的外面包含。
- 尽管"www.*.example.org"和"w*.example.org"是无效的,但是可以使用正则表达式指定这些名称,如"^www\..+\.example\.org$"和"^w.*\.example\.org$"。
- 还有一种特殊形式:".example.org"既可以精确匹配"example.org",又可以匹配通配符形式的"*.example.org"。
使用正则表达式的server_name
- nginx使用的正则表达式与Perl编程语言(PCRE)使用的正则表达式兼容。要使用正则表达式,服务器名称必须以波浪号开头:
server_name ~^www\d+\.example\.net$;
表达式 | 描述 |
---|---|
^ | 匹配字符开头的字符 |
$ | 匹配字符结尾的字符 |
x? | 匹配 0 次或一次 x 字符串 |
. | 匹配除换行符以外的所有字符 |
.* | 匹配 0 次或多次的任何字符 |
.+ | 匹配 1 次或多次的任何字符 |
\d | 匹配一个数字的字符,和 [0-9] 语法一样 |
\d+ | 匹配多个数字字符串,和 [0-9]+ 语法一样 |
\w | 英文字母或数字的字符串,和 [a-zA-Z0-9_] 语法一样 |
\w+ | 和 [a-zA-Z0-9_]+ 语法一样 |
{m,n} | 匹配在 m个 以上 n个 以下 的指定字符串 |
参考自:https://www.runoob.com/perl/perl-regular-expressions.html
- 如果不以波浪号开头,则将被视作精确名称或者通配符名称(如果包含星号)。
- 一定要加上'^'和'$'锚点,虽然在语法上不是必需的,但在逻辑上,是有必要的。
- 注意,域名的点'.'应以反斜杠转义:'\.'。否则将被视作正则匹配符号。
- 包含字符"{"和"}"的正则表达式应加引号:
server_name "~^(?<name>\w\d{1,3}+)\.example\.net$";
否则,nginx将无法启动并报错:directive "server_name" is not terminated by ";" in ...
- 一个被命名了的正则表达式捕获可在以后用作变量:
server {
server_name ~^(www\.)?(?<domain>.+)$;
location / {
root /sites/$domain;
}
}
PCRE库使用以下语法支持命名捕获:
?<name> 与Perl 5.10兼容的语法,自PCRE-7.0开始受支持
?'name' 与Perl 5.10兼容的语法,自PCRE-7.0开始受支持
?P<name> 自PCRE-4.0起受支持的Python兼容语法
如果nginx无法启动并显示错误消息:pcre_compile() failed: unrecognized character after (?< in ...
这意味着PCRE库很旧,应尝试使用语法"?P<name>"。捕获也可以以数字形式来引用:
server {
server_name ~^(www\.)?(.+)$;
location / {
root /sites/$2;
}
}
但是,考虑到数字形式的引用很容易被覆盖,所以这种用法应仅限于简单的情况(像上面的例子)。
待续...
Nginx server_name翻译的更多相关文章
- nginx server_name 多个
nginx server_name 多个 nginx server_name 多个的话,空格隔开就行 server_name baidu.com baidu.me; 如果很多的话可以用正则,我的需求, ...
- 记一个nginx server_name配置多个时的坑
文章转载自:https://blog.csdn.net/u011296355/article/details/106740860/ 背景 为了区分线上环境和测试环境,我弄了个自己测试专用的域名test ...
- centos nginx server_name 配置域名访问规则
今天配置Server_name时,希望禁用一些域名,应为这些域名我想让通过另外一个Server配置 server_name "~^((\w*[^w]{1}\w*)|w{1,2})\.hell ...
- nginx server_name
在我的机子了nginx的 server_name要配制成127.0.0.1才能用,否则就报错,刚试用nginx还不知道为什么,先记下来
- [Nginx][HttpUpstreamModule]翻译负载均衡
英文原文地址:http://nginx.org/en/docs/http/ngx_http_upstream_module.html 大纲: 示例 指令 嵌入变量 ngx_http_upstream_ ...
- nginx server_name匹配顺序
server_name可为IP/domain/localhost/null等任何字符串(字符串server_name也可以用来匹配),注意各个 server 块的顺序. 1.如果只有一个server, ...
- Nginx server_name 正则泛域名反向代理两例
最近在学习Nginx搭建负载均衡系统,感觉系统部署方式的思路瞬间开阔了很多. 负载均衡服务器的后端服务器上各自有一套功能相同的WEB管理系统,主要作用是方便的对各自服务器的IIS站点及服务器防火墙测量 ...
- docker学习之路-nginx镜像(翻译)
本篇来自https://hub.docker.com/_/nginx/?tab=description 它是docker hub上nginx的官方网站,上面有关于nginx的使用描述等.从这里你可以找 ...
- Nginx配置翻译
Windows 格式 server { listen 82; server_name localhost; root "D:/testfile/"; location / { in ...
随机推荐
- Python简单爬取图书信息及入库
课堂上老师布置了一个作业,如下图所示: 就是简单写一个借书系统. 大概想了一下流程,登录-->验证登录信息-->登录成功跳转借书界面-->可查看自己的借阅书籍以及数量... 登录可以 ...
- css3新增属性-background背景
css3新增属性 边框属性 背景属性 文字属性 颜色属性 背景属性 属性 说明 background-image 添加背景图片 background-size 指定背景图像的大小 background ...
- Billu_b0x2内网渗透(多种提权方法)靶场-vulnhub
个人博客阅读体验更佳 本次来试玩一下vulnhub上的Billu_b0x2,下载地址. 下载下来后是 .ova 格式,建议使用vitualbox进行搭建,vmware可能存在兼容性问题.靶场推荐使用N ...
- 【UE4 设计模式】观察者模式 Observer Pattern
概述 描述 定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新.观察者模式又叫做 发布-订阅(Publish/Subscribe)模式 模型-视图(M ...
- The WebSocket session [0] has been closed and no method (apart from close()) may be called on a closed session-ConcurrentHashMap使用在webSocket中采的坑
一.问题由来 现在开发的一个项目中使用webSocket这个技术和Unity客户端程序进行联动操作,因为socket连接相对来说比http请求连接更加的快速,而且是 一个长链接,方便于这个项目进行其他 ...
- Redis:学习笔记-03
Redis:学习笔记-03 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 7. Redis配置文件 启动 ...
- Git: 搭建一个本地私人仓库
Git: 搭建一个本地私人仓库 寝室放个电脑.实验室也有个电脑 为进行数据同步,充分利用实验室的服务器搭建了个本地私人仓库 1. 安装流程 当然首先保证服务器上与PC机上都已经安装了可用的Git 在P ...
- [no code][scrum meeting] Beta 8
$( "#cnblogs_post_body" ).catalog() 例会时间:5月22日15:30,主持者:赵涛 下次例会时间:5月23日11:30,主持者:肖思炀 一.工作汇 ...
- [技术博客]大闸蟹的技术博客,通过gitlab api进行用户批量创建
技术博客--通过gitlab api批量注册用户 gitlab登录界面本身提供了register功能,但需要手工一个个添加,对于一次性会添加整个班级的学生的软工平台来说并不科学合理.使用gitlab ...
- linux updatedb: can not open a temporary file for `/var/lib/mlocate/mlocate.db'
我们想查找我们最新创建的文件时,由于locate的数据库是每天更新.所以我们新创建的文件还没有被更新到系统的数据库. 这是需要手动更新数据库. 然后就可以查到. updatedb 输出 updated ...