nginx中的server_name指令主要用于配置基于名称虚拟主机,server_name指令在接到请求后的匹配顺序分别为:1、准确的server_name匹配,例如:
server {
listen 80;
server_name frady.info www.frady.info;
...
}
2、以*通配符开始的字符串:
server {
listen 80;
server_name *.frady.info;
...
}
3、以*通配符结束的字符串:
server {
listen 80;
server_name www.*;
...
}
4、匹配到的正则表达式:
server {
listen 80;
server_name ~^(?<www>.+)\.frady\.info$;
...
}
nginx将按照1,2,3,4的顺序对server name进行匹配,只有有一项匹配以后就会停止搜索,所以我们在使用这个指令的时候一定要分清楚它的匹配顺序(类似于location指令)。
来个复杂的,这样既可以匹配泛域名,又可以匹配部分以blog开头的域名
两个都是正则,优先级一样,哪个匹配的最精确就会匹配到哪个
#匹配*.frady.info
server_name ~^(.+)?\.frady\.info$;
#匹配blog*.frady.info
~^blog(.+)?\.frady\.info$;
以下是理所当然的写法,其实是错误的,因为*会优先于正则,所以正则处写的都匹配不到
#匹配*.frady.info
server_name *.frady.info;
#匹配blog*.frady.info
~^blog(.+)?\.frady\.info$;
你也可能写出的是这样的
#匹配blog*.frady.info
~*^blog(.+)?\.frady\.info$;
用regular expressions tester测试没有问题,放到nginx里,然后发现报错了
后来才想到域名其实是不区分大小写的,所以这块是不需要nginx来处理
官方的说明:
1.exact name
2.longest wildcard name starting with an asterisk, e.g. “*.example.org”
3.longest wildcard name ending with an asterisk, e.g. “mail.*”
4.first matching regular expression (in order of appearance in a configuration file)
分享到:
相关推荐
在Nginx服务器配置中,`server_name`指令用于定义虚拟主机可以响应的域名或IP地址。当一个请求到达Nginx时,它会检查请求的Host头字段,并尝试匹配`server_name`设置来确定应该将请求路由到哪个虚拟主机。在配置文件...
这就要求配置者在设置server_name时要明确其匹配顺序,以便正确地捕捉到相应的请求。 在实际应用中,server_name的使用可以非常灵活。例如,可以在一个server块中配置多个站点,通过正则表达式捕获二级域名的不同...
在 Nginx 配置中,`default_server` 是一个关键的指令,用于指定在没有匹配到 `server_name` 的情况下应该处理请求的默认服务器。它允许你控制那些通过 IP 地址或者未在配置中明确指定的域名的访问行为。 ### 1. ...
Nginx中的server_name指令主要用于配置基于名称虚拟主机,server_name指令在接到请求后的匹配顺序分别为: 1、准确的server_name匹配,例如: server { listen 80; server_name ssdr.info www.ssdr.info; ... } 2...
nginx 在收到一条请求时将先... 定义 server_name 时可以使用 完全名称、通配符名称、正则表达式名称, 它们的匹配顺序如下: 完全匹配 前通配符匹配, 即 *.example.org 后通配符匹配, 即 mail.* 正则表达式匹配 如果
在上述配置中,`allow`和`deny`指令按照它们在配置文件中的顺序执行,如果IP匹配了`deny`,则后续的`allow`规则将不再检查。 二、控制并发连接数 Nginx可以通过`limit_conn`模块来限制每个IP地址的并发连接数。...
匹配规则的顺序是:先根据访问端口匹配,然后根据浏览器的 Host 请求头匹配,最后根据 server_name 匹配。如果找不到匹配的 server,Nginx 将会选择默认的第一个 server。 启动 Nginx 使用以下命令启动 Nginx: ``...
- 匹配顺序:先匹配普通字符串,再匹配正则表达式。普通字符串的顺序不影响最终匹配,但正则表达式的顺序会影响匹配结果。 - 特殊前缀的作用:`=`用于精确匹配,`^~`用于阻止后续正则匹配,`~`和`~*`分别表示区分和...
以下就是我们整理的nginx常见的问题,解决办法我们例举了1-2种,大家可以都测试下。 常见问题 问题一:相同server_name多个虚拟主机...根据Linux系统中文件顺序读取 问题二:location匹配优先级 location = /code1/
- **server_name**: 指定服务器域名,可以是多个,支持通配符。 - **root**: 设置网站根目录,用于定位静态资源。 - **index**: 指定默认首页文件,如"index.html index.htm"。 - **listen**: 指定服务器监听的端口...
以每个server区块都监听80端口为例,www.pm.com对应服务器ip地址,匹配顺序为: ①server_name和www.pm.com完全相同的区块。 ②server_name为 *.pm.com 的区块。(通配符在前) ③server_name为 pm.* 的区块。...
- `if`指令在Nginx配置中应谨慎使用,因为它可能导致性能下降和意外行为。在这种情况下,可以考虑使用更安全的`map`指令或修改cookie值的逻辑。 - 灰度发布时,需要确保所有服务器配置正确,且能处理请求负载。 - ...
3. **指令作用域**:指令可以在不同的上下文中使用,如 `server_name` 在 server 块内定义,`root` 在 location 块内定义。 4. **指令顺序**:配置文件中的指令执行顺序对结果有影响,一般是从上到下依次解析。 **...
- `server_name _`:设置服务器名称,`_`代表任何未知的主机名都将匹配到该服务器。 - `location /`:定义了请求的处理方式,其中`try_files $uri $uri/ =404;`指定了如何查找请求的资源文件。 #### 五、配置新站点...
在提供的`start.bat`文件中,可能是用于启动Nginx的批处理脚本,例如`.\nginx.exe -c conf\nginx.conf`,指定配置文件启动Nginx。 - `nginx.exe`是Nginx的可执行文件。 - `logs`目录存放日志文件,如`access.log`...
这里,`location /` 是匹配所有请求的默认规则,`try_files` 指令用于指定文件查找顺序。对于.php文件,Nginx会将请求转发给PHP解析器处理,这里假设是通过fastcgi协议与PHP-FPM通信。 接下来是PHP的安装和配置。...
location块是Nginx配置中最灵活的部分,用于匹配请求的URI。它可以包含URL路径匹配规则(如正则表达式或前缀匹配)以及对应的处理策略,如文件路径(root或alias)、重定向(return)、代理转发(proxy_pass)等。 ...