更新时间:2016年3月19日 09:34:10 作者:
本文主要介绍Nginx虚拟主机配置中的具体写法。服务器名称是虚拟主机中必须配置的重要参数。有需要的朋友可以参考一下。
该指令可以根据域名设置虚拟主机。根据请求头的内容,一台IP服务器可以配置多个域名。以下参数有效:
server_name jb51.net; server_name jb51.net www.jb51.net; server_name *.jb51.net; server_name .jb51.net; server_name nginx.*; server_name jb51.netg bucknell.net brackley.org; server_name localhost litchfield bleddington; server_name "";
多个域名之间用空格分隔。 nginx允许虚拟主机有一个或多个名称,也可以使用通配符“*”来设置虚拟主机的名称。在上面的例子中我们看到了很多特别的东西:
第一组示例,首先定义为,然后来自的请求将被发送到主机。第二个示例配置 和 ,然后将请求 和 发送到该主机。
*。和 。是等效的配置,设置主机来处理所有子域,例如等。
第二组配置 nginx.* 来配置服务器处理所有以 nginx 开头的请求。例如,,,,
下一组第一个配置将主机设置为处理来自三个域名的请求。 nginx 允许设置无效域名的名称。例如,在下面的配置中,我们可以看到 、 和 三个不是有效域名的示例。 nginx 只查找请求的 HTTP 中的域名,但不判断域名是否有效。在此示例中,这些主机名可以在 /etc/hosts 中配置。在本地调试时,有时使用非域名主机名更合适。
最后一组示例设置为空双引号,告诉 nginx 捕获所有未指定或未在其他示例中指定的请求。
总结一下,收到请求后指令的匹配顺序是:
1、精准匹配,例如:
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的顺序来匹配名字,只有一项匹配到才会停止搜索,所以我们在使用这个命令的时候,一定要分清楚它的匹配顺序(和命令类似)。
该命令一个非常实用的功能就是可以使用正则表达式捕获功能,可以尽可能的简化配置文件。毕竟太长的配置文件日常维护也很不方便。以下是2个具体应用:
1. 在一个区块中配置多个站点:
复制代码代码如下:
{ 80; ~^()?(.+)$;索引index..html;根/数据//$2; }
您网站的主目录应如下所示:
复制代码代码如下:
/数据///数据///数据///数据//
这样就可以仅使用一个块来完成多个站点的配置。
2. 为一个站点配置多个二级域名。
在实际的网站目录结构中,我们通常会为网站的二级域名创建一个单独的目录。同样,我们可以使用正则捕获在一个区块中配置多个二级域名:
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/
这样访问时根目录为/data///www/,访问时为/data///nginx/,以此类推。
下面的if语句的作用是重定向方向,不仅解决了网站主目录访问的问题,还增加了域名在SEO中的权重。
扫一扫在手机端查看
-
Tags : Nginx 虚拟主机 server_name VirtualHost
- 上一篇:权限开着但是麦克风不能用_为什么在服务器上php里执行file_put_contents创建文件返回是false呢,文件目录已经设置为777的权限了,不解
- 下一篇:权限设置怎么打开_详解Docker创建php开发环境遇到的权限问题解决方案
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。