利用Nginx rewrite规则实现域名显性转发
体验更优排版请移步原文:http://blog.kwin.wang/website/nginx-rewrite-realize-domain-forward.html
自己的blog域名最开始用的vblog.win,后来搞到kwin.wang就换用了 http://blog.kwin.wang 这个子域名,原先使用米发把vblog.win转发到主站,后来米发用了一段时间就不能正常转发了,证明免费的东西还是不太靠谱,前段时间将自己的网站重新改版建立了一下,几个站点使用Nginx做反向代理,这里就想用Nginx来实现一下域名转发。
Nginx有个rewrite规则,就是用来实现URL重定向的,这里简单介绍:
rewrite <regex> <replacement> [flag];
关键字 正则 替代内容 flag标记
flag标记说明:
last //本条规则匹配完成后,继续向下匹配新的location URI规则
break //本条规则匹配完成即终止,不再匹配后面的任何规则
redirect //返回302临时重定向,浏览器地址会显示跳转后的URL地址
permanent //返回301永久重定向,浏览器地址栏会显示跳转后的URL地址
我的配置是这么写的:
server {
listen 80;
server_name vblog.win www.vblog.win;
rewrite /.* http://blog.kwin.wang$uri permanent;
}
这里 $uri 是指匹配正则后跳转的目标地址,比如访问 vblog.win/about 就会跳转到 http://blog.kwin.wang/about,非常简单。
使用域名转发有利于网站首选域的确认,多个路径对应同一资源域的情况应该尽量采用这种方式来处理,有利于网站权重的集中,对于搜索引擎和用户来说都很友好。另外,对Nginx rewrite的介绍比较简单,更深层次使用场景还有待研究。