把多个二级域名映射到不同的文件目录,例如
-
bbs.abc.com,映射到 html/bbs
-
blog.abc.com 映射到 html/blog
http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server {listen 80;server_name www.abc.com;location / {root html/www;index index.html index.htm;}}server {listen 80;server_name bbs.abc.com;location / { root html/bbs;index index.html index.htm;} } server {listen 80;server_name blog.abc.com;location / { root html/blog;index index.html index.htm;} }
}
在Nginx的配置中,
server_name
指令用于定义当前server
块处理的域名(或域名的集合)。这个指令让Nginx知道,当接收到对应域名的HTTP请求时,应该使用哪个server
块来处理这些请求。server_name
可以指定一个域名、多个域名,甚至是使用通配符的域名模式。作用
- 域名匹配:Nginx接收到HTTP请求后,会根据请求的
Host
头部来匹配server_name
,以确定使用哪个server
块来处理请求。- 虚拟主机:通过配置不同的
server_name
,Nginx可以在同一台服务器上托管多个网站(虚拟主机)。每个网站有自己的server
块和server_name
设置。- 默认服务器:在多个
server
块中,可以通过特定的server_name
设置(如_
或者没有设置server_name
)来定义一个默认的服务器,用于处理未明确匹配到任何server_name
的请求。
第一个
server
块处理对www.example.com
的请求,而第二个server
块处理对blog.example.com
的请求。这样,即使这两个域名指向同一IP地址,Nginx也能根据请求的域名来分别处理它们。通配符和正则表达式
- 通配符:
server_name
可以使用通配符,如*.example.com
匹配任何以.example.com
结尾的域名。- 正则表达式:使用波浪号(
~
)开头,可以为server_name
指定一个正则表达式,提供更灵活的匹配规则。通过这种方式,
server_name
为Nginx提供了强大的请求分发和网站托管能力。