# ngx_http_core_module
# server_name
确切的 server_name 匹配
以 * 通配符开始的最长字符串
以 * 通配符结束的最长字符串
注意:通配符名字只可以在名字的起始处或结尾处包含一个星号,并且星号与其他字符之间用点分隔。所以,
www.*.example.org和w*.example.org都是非法的。有一种形如 ".example.org" 的特殊通配符,它可以既匹配确切的名字 "example.org",又可以匹配一般的通配符名字 "*.example.org"。
匹配正则表达式
为了使用正则表达式,虚拟主机名必须以
波浪线“~”起始否则该名字会被认为是个确切的名字。~^([^.]+)\.example\.com*.example.com
# location
- 匹配 URI 类型,有四种参数可选,当然也可以不带参数。
- 命名 location,用 @ 来标识,类似于定义 goto 语句块。
location [ = | ~ | ~* | ^~ ] /URI { … }
location @/name/ { … }
| 符号 | 含义 |
|---|---|
空 | location 后没有参数直接跟着 标准 URI,表示前缀匹配,代表跟请求中的 URI 从头开始匹配。 |
= | 用于标准 URI 前,要求请求字符串与其精准匹配,成功则立即处理,nginx 停止搜索其他匹配。 |
^~ | 用于标准 URI 前,并要求一旦匹配到就会立即处理,不再去匹配其他的那些个正则 URI,一般用来匹配目录。 |
~ | 用于正则 URI 前,表示 URI 包含正则表达式, 区分大小写。 |
~* | 用于正则 URI 前, 表示 URI 包含正则表达式, 不区分大小写。 |
@ | @ 定义一个命名的 location,@ 定义的 locaiton 名字一般用在内部定向,例如 error_page, try_files 命令中。它的功能类似于编程中的 goto。 |
多个 location 配置的情况下匹配顺序为:
- 首先匹配 =
- 其次匹配 ^~
- 其次是按文件中顺序的正则匹配
- 最后是交给 /
- 当有匹配成功时候,停止匹配,按当前匹配规则处理请求