在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
server_name指令可以设置基于域名的虚拟主机,根据请求头部的内容,一个ip的服务器可以配置多个域名。下面这些server_name的参数是有效的: server_name ogeek.net; server_name ogeek.net www.ogeek.net; server_name *.ogeek.net; server_name .ogeek.net; server_name nginx.*; server_name ogeek.netg bucknell.net brackley.org; server_name localhost litchfield bleddington; server_name ""; 多个域名之间以空格分隔。nginx允许一个虚拟主机有一个或多个名字,也可以使用通配符"*"来设置虚拟主机的名字。上面的例子我们看到了很多特殊的地方: 第一组例子,首先定义server_name为ogeek.net,那么来自http://ogeek.net的请求就会发到该主机上。第二个例子配置了ogeek.net和www.ogeek.net,那么http://ogeek.net和https://www.ogeek.net的请求会发到这个主机上。 总结一下,server_name指令在接到请求后的匹配顺序分别为: server { listen 80; server_name domain.com www.domain.com; ...} 2、以通配符开始的字符串: server { listen 80; server_name .domain.com;...} 3、以通配符结束的字符串: server { listen 80; server_name www.; ...} 4、匹配正则表达式: server { listen 80; server_name ~^(?.+).domain.com$;...} nginx将按照1,2,3,4的顺序对server name进行匹配,只有有一项匹配以后就会停止搜索,所以我们在使用这个指令的时候一定要分清楚它的匹配顺序(类似于location指令)。 1、在一个server块中配置多个站点: 复制代码 代码如下: server { listen 80; server_name ~^(www.)?(.+)$; index index.php index.html; root /data/wwwsite/$2; } 站点的主目录应该类似于这样的结构: 复制代码 代码如下: /data/wwwsite/domain.com/data/wwwsite/nginx.org/data/wwwsite/baidu.com/data/wwwsite/google.com 这样就可以只使用一个server块来完成多个站点的配置。 2、在一个server块中为一个站点配置多个二级域名。 实际网站目录结构中我们通常会为站点的二级域名独立创建一个目录,同样我们可以使用正则的捕获来实现在一个server块中配置多个二级域名: server { listen 80; server_name ~^(.+)?.domain.com$; index index.html; if ($host = domain.com){ rewrite ^ http://www.domain.com permanent; } root /data/wwwsite/domain.com/$1/;} 站点的目录结构应该如下: /data/wwwsite/domain.com/www//data/wwwsite/domain.com/nginx/ 这样访问www.domain.com时root目录为/data/wwwsite/domain.com/www/,nginx.domain.com时为/data/wwwsite/domain.com/nginx/,以此类推。 |
请发表评论