首页 > 代码库 > Nginx虚拟主机配置实践之nginx访问同一个地址方法(二)
Nginx虚拟主机配置实践之nginx访问同一个地址方法(二)
Nginx虚拟主机配置实践之nginx访问同一个地址方法(二)
一、虚拟主机别名介绍
虚拟主机别名就是为虚拟主机设置除了主域名以外的另一个或多个域名名字,这样就能实现用户访问的多个域名对应于同一个虚拟主机网站的功能。在生产环境中,以www.afeilinux.com域名的虚拟主机为例,为其增加一个别名afeilinux.com时,在该域名出现的网站内容和访问www.afeilinux.com得到的结果是一样的。
二、实施方法
第一种方法:Nginx虚拟主机的别名配置
更改wtf.conf配置文件
[root@nginx-oldboy conf]# vim extra/wtf.conf
3 server_name www.afeilinux.com afeilinux.com;
比较更改前后配置文件
语法检查与重新加载
[root@nginx-oldboy conf]# nginx -t
[root@nginx-oldboy conf]# nginx -s reload
更改hosts
[root@nginx-oldboy conf]# vim /etc/hosts
添加:192.168.8.117 www.afeilinux.com afeilinux.com
测试
[root@nginx-oldboy conf]# curl www.afeilinux.com
第一次测试
[root@nginx-oldboy conf]# curl afeilinux.com
第一次测试
虚拟主机别名在生产中实际运用
多数企业网站希望访问www.afeilinux.com和afeilinux.com时,所浏览的是同一个页面,若有这类需求,就可以让afeilinux.com以别名的方式出现,这时两个域名都要解析到服务器的IP地址。
第二种方法:Nginx rewrite
Nginx rewrite概念
和Apache等Web服务软件一样,Nginx rewrite的主要功能也是实现URL地址重写。Nginx的rewrite规则需要PCRE软件的支持,即通过perl兼容正则表达式语法进行规则匹配。所以在安装Nginx时要安装PCRE软件,同时也让Nginx支持了rewrite的功能,默认参数编译时,Nginx就会安装支持rewrite的模块,但是,也必须要有PCRE软件的支持。
查看安装Nginx版本和模块的信息:
[root@nginx-oldboy ~]# nginx -V
rewrite指令语法
语法:rewrite regex replacement[flag]
默认值:none
应用位置:server、location、if
rewrite是实现URL重写的关键指令,根据regex(正则表达式)部分的内容,重定向到replacement部分,结尾是flag标记。下面是个简单的URL rewrite跳转的例子:
rewrite ^/(.*) http://www.afeilinux.com/$1 permanent;
在上述指令中,rewrite为固定关键字,表示开启一条rewrite匹配规则,regex部分是^/(.*),这是一个正则表达式,表示匹配所有,匹配成功后跳转到http://www.afeilinux.com/$1。这里的$1是取前面regex部分括号里的内容,结尾是permanent;是永久301重定向标记,即跳转到后面的http://www.afeilinux.com地址上。
Nginx rewrite的企业应用场景
(1)可以调整用户浏览的URL,使其看起来更规范,合乎开发及产品人员的需求。
(2)为了让搜索引擎收录网站内容,并让用户体验更好,企业会将鼎泰URL地址伪装成静态地址提供服务。
(3)网站换新域名后,让旧域名的访问跳转到新的域名上,例如:让京东的360buy换成了jd.com。
(4)根据特殊变量、目录、客户端的信息进行URL跳转等。
Nginx rewrite 301跳转
实验背景:实现域名从afeilinux.org跳转到www.afeilinux.org
查看原来虚拟主机的配置:
[root@nginx-oldboy extra]# cat org.conf
更改之后的虚拟主机配置:
[root@nginx-oldboy extra]# cat org.conf
说明:当用户访问afeilinux.org及下面的任意内容时,都会通过这条rewrite跳转到www.afeilinux.org对应的地址。
语法检测与nginx重启
[root@nginx-oldboy extra]# nginx -t
[root@nginx-oldboy extra]# nginx -s reload
测试
说明:上图访问前的地址是:afeilinux.org,访问后的地址:www.afeilinux.org
curl测试:
本文出自 “圣骑士控魔之手” 博客,请务必保留此出处http://wutengfei.blog.51cto.com/10942117/1940440
Nginx虚拟主机配置实践之nginx访问同一个地址方法(二)