一般二级域名都是解析到不同的服务器上,但是很多时候没有那么土豪可以用那么多服务器哇。
当然土豪完全可以1个二级域名一台服务器,甚至是对应多个服务器,等我成为土豪了,也可以买两杯豆浆,喝一杯,扔一杯
虽然可以在域名解析的时候使用隐性url进行域名转发,转发到另外一个域名
但是这样会造成跨域问题,不是太科学太通用
我们可以使用nginx来进行转发
思路就是使用nginx监听80端口,我们可以把二级域名都指向同一个ip地址,然后根据不同的二级域名转发到不同的端口上去。
来一个很简单的例子:
就是nginx监听80端口,然后转发到另外一个端口上
转发的地址还可以是不同服务器上的,当然我们可以其实就是为了同一个服务器不同的端口
然后访问看看,已经转发成功了
m.tnblog.net是访问的80端口的nginx,然后出现的页面其实是8092端口的内容!
当然这样只转发一个没有什么意义,还不如把项目的地址直接修改成80端口,还不用转发一次,效率还快一些
使用nginx转发不同的二级域名
先把需要解析到同一台服务器的二级域名都在解析中指向同一个ip地址(也就是同一台服务器嘛)
比如要实现:
访问m.tnblog.net的时候实际访问的是8090端口
访问test.tnblog.net的时候实际访问的是8095端口
配置方法1:
# 监听80端口,根据二级域名,动态进行转发 server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; if ( $http_host ~* "^(.*?)\.tnblog\.net" ) { set $domain $1; } location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; if ( $domain ~* "m" ) { proxy_pass http://m.tnblog.net:8090; } if ( $domain ~* "test" ) { proxy_pass http://test.tnblog.net:8095; } } }
然后执行命令nginx -s reload重启nginx搞定!
当访问m.tnblog.net时nginx会反向代理到m.tnblog.net:8090
当访问test.tnblog.net时nginx会反向代理到test.tnblog.net:8095
发现效果还是很不错的,虽然转发了一次,速度影响并不大。
这里注意一下:转发的如果是本地服务器,使用localhost比使用域名更快一下!不用在经过域名一次
最后分享一碗鸡汤:
只要坚持尝试,总有一天困难会变得容易,枯燥也会变得有趣
后记:这里遇到个问题,就是使用了nginx后,项目第一次加载速度会变得比较慢,经过测试是因为静态资源的问题,
把他放到cdn试试
放到cdn后第一次加载的速度提升太明显了!,相当于第一次访问都多了一个缓存!
但是那个样式里边自动加载的字体又有问题了,他是自动加载的有个文件夹的效果
很好解决,虽然七牛云的cdn没有发现创建文件夹效果,但是你可以把文件上传上去后,重命名前面加上一个文件夹的效果
方法2:http://www.tnblog.net/aojiancc2/article/details/2477
欢迎加群讨论技术,群:677373950(满了,可以加,但通过不了),2群:656732739