前言
作为nginx的http模块中的重要指令,对于使用nginx的同学来说,有必要做深入的了解;
server_name指令
用于设置虚拟主机服务名称,如:127.0.0.1 、 localhost 、域名[www.baidu.com | www.jd.com]
关于 server_name 的配置方式有三种,分别是:
- 精确匹配
- 通配符匹配
- 正则表达式匹配
精确匹配配置
server {
listen 80;
server_name www.baidu.com www.localhost;
}
如下:在windows本地的nginx.conf配置文件中配置了如下参数
需要注意的是,如果是在实际的生产服务器上面进行配置的话,域名一定是有效的,server_name可以配置多个,然后重启nginx服务,访问下试试,可以看到通过两种方式都可以访问到nginx;
通配符模式配置
server_name 中支持通配符 "*", 但需要注意的是通配符不能出现在域名的中间,只能出现在首段或尾段
server_name localhost www.zcy.*;
如本地的nginx按照上面的配置,重启nginx服务之后,通过浏览器进行访问,可以看到均可以访问到;
正则表达式配置
server_name 中可以使用正则表达式,并且使用 ~ 作为正则表达式字符串的开始标记
代码 | 说明 |
^ | 匹配搜索字符串开始位置 |
$ | 匹配搜索字符串结束位置 |
. | 匹配除换行符 \n 之外的任何单个字符 |
\ | 转义字符,将下一个字符标记为特殊字符 |
[xyz] | 字符集,与任意一个指定字符匹配 |
[a-z] | 字符范围,匹配指定范围内的任何字符 |
\w | 与以下任意字符匹配 A-Z a-z 0-9 和下划线 , 等效于 [A-Za-z0-
9_] |
\d | 数字字符匹配,等效于 [0-9] |
{n} | 正好匹配 n 次 |
{n,} | 至少匹配 n 次 |
{n,m} | 匹配至少 n 次至多 m 次 |
* | 零次或多次,等效于 {0,} |
+ | 一次或多次,等效于 {1,} |
? | 零次或一次,等效于 {0,1} |
实际配置案例
server_name ~^www\.(\w+)\.com$;
重启nginx服务,浏览器访问上面的地址,可以看到仍然能正常访问
server_name与host匹配优先级如下:
1、完全匹配
2、通配符在前的,如*.test.com
3、在后的,如www.test.*
4、正则匹配,如~^\.www\.test\.com$
如果都不匹配
1、优先选择listen配置项后有default或default_server的
2、找到匹配listen端口的第一个server块
到此这篇关于nginx配置指令之server_name的具体使用的文章就介绍到这了,更多相关nginx server_name内容请搜索得得之家以前的文章希望大家以后多多支持得得之家!
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!