在 Nginx 中,server_name 参数用于定义虚拟主机的域名或者 IP 地址。该参数可以被配置在 server 块或者 location 块中,用于匹配请求的域名或者 IP 地址。
以下是 server_name 参数的详细解释:
- 精确匹配:使用 server_name 参数配置一个精确的域名或者 IP 地址,如:
server {
listen 80;
server_name www.example.com;
...
}
上述代码定义了一个名为 www.example.com 的虚拟主机。当请求该域名时,Nginx 会将该请求转发至该虚拟主机。
- 通配符匹配:使用 * 来代表匹配任意字符,如:
server {
listen 80;
server_name *.example.com;
...
}
上述代码定义了一个匹配以 example.com 结尾的任何域名的虚拟主机,如 foo.example.com 和 bar.example.com。
- 正则表达式匹配:使用正则表达式匹配请求的域名或者 IP 地址,如:
server {
listen 80;
server_name ~^(?<subdomain>.*?)\.example\.com$;
...
}
上述代码使用正则表达式匹配以 .example.com 结尾的域名,并将子域名保存到变量 subdomain 中。例如,foo.example.com 将被匹配并且 subdomain 变量将被设置为 foo。
总的来说,通过 server_name 参数,能够非常灵活地配置 Nginx 的虚拟主机。可以通过精确匹配、通配符匹配和正则表达式匹配来满足各种场景的需求。