tnblog
首页

使用nginx在同一台服务器上配置多个二级域名

1469人阅读 2019/5/19 16:11 评论:2 手机浏览 收藏
分类: 云服务

一般二级域名都是解析到不同的服务器上,但是很多时候没有那么土豪可以用那么多服务器哇。

当然土豪完全可以1个二级域名一台服务器,甚至是对应多个服务器,等我成为土豪了,也可以买两杯豆浆,喝一杯,扔一杯


虽然可以在域名解析的时候使用隐性url进行域名转发,转发到另外一个域名

但是这样会造成跨域问题,不是太科学太通用


我们可以使用nginx来进行转发

思路就是使用nginx监听80端口,然后根据不同的二级域名转发到不同的端口上去


来一个很简单的例子:

就是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




评价
自己阳光积极向上,就会吸引阳光积极向上的人和事
文章
6
评论
8
分类
16
关注
16
{{item.ArticleTitle}}
{{item.BlogName}} : {{item.Content}}