nginx 实现多域名转发到web服务不同路径

项目背景

我们有个项目前端是用vue 写的,node 起的web服务,中转api到后台接口。

但是项目下有多个平台,可以理解成多个端,每个端都有自己的node web服务,绑定不同端口,如3001 3002 3003 3004 ...

这有个麻烦的就是部署,需要启多个服务。

现在想把多个端合并在一起,起一个node web 服务。

端的区别用路径。如a 端就是/a ,b端就是/b

这样在开发时是可以使用的。麻烦的一点就是解决多个端session 的问题。

部署时需要www.x.com 访问/

a.x.com 访问 /a/

b.x.com 访问/b/

这样就需要用nginx 实现代理了。

但是又有一个问题,a.x.com 访问的是/a/,导致静态资源加载不了。

解决:

location ~ .*\.(jpg|gif|jpeg|bmp|png|ico|js|json)$ 
        { 
            access_log off;            
            root /mnt/csyl_web/public;
        #expires 定义用户浏览器缓存的时间为7天,如果静态页面不常更新,可以设置更长,这样可以节省带宽和缓解服务器的压力
            expires      1d; 
        } 

测试时发现发起的api 请求访问不到。

请求都是在根目录,通过a.xx.com访问的就是/a/get 了。

还需要想办法解决,区分开来。

因为是SPA 项目,只有一个页面,请求/时node 返回页面。其他的都是请求了。

location = / 时 访问/a/

location /  时访问/

以下是代码

#----------------wwww
    server {
        listen       80;
        server_name  www.a.com;
   	location / {
            proxy_pass http://localhost:3010/;
        }
     }	
#----------------------------g
    server {
        listen       80;
        server_name  g.a.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location ~ .*\.(jpg|gif|jpeg|bmp|png|ico|js|json)$ 
        { 
            access_log off;            
            root /mnt/csyl_web/public;
        #expires 定义用户浏览器缓存的时间为7天,如果静态页面不常更新,可以设置更长,这样可以节省带宽和缓解服务器的压力
            expires      1d; 
        } 


        location = / {
            #root   html;
            #index  index.html index.htm;

            proxy_http_version  1.1;
            proxy_set_header    X-Real-IP $remote_addr;
            proxy_read_timeout  120;
            proxy_set_header    Host $http_host;
            proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header    Upgrade $http_upgrade;
            proxy_set_header    Connection "upgrade";
            proxy_buffering off; #禁用缓存
            #proxy_pass          http://myapp;
            proxy_pass http://localhost:3010/webg/;
        }
        location / {
            proxy_pass http://localhost:3010/;
        }
    }



   #-----------------------------o
    server {
        listen       80;
        server_name  o.a.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

	    location ~ .*\.(jpg|gif|jpeg|bmp|png|ico|js|json)$ 
        { 
            access_log off;            
            root /mnt/csyl_web/public;
        #expires 定义用户浏览器缓存的时间为7天,如果静态页面不常更新,可以设置更长,这样可以节省带宽和缓解服务器的压力
            expires      1d; 
        } 
        location = / {
            #root   html;
            #index  index.html index.htm;

            proxy_http_version  1.1;
            proxy_set_header    X-Real-IP $remote_addr;
            proxy_read_timeout  120;
            proxy_set_header    Host $http_host;
            proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header    Upgrade $http_upgrade;
            proxy_set_header    Connection "upgrade";
            proxy_buffering off; #禁用缓存
            #proxy_pass          http://myapp;
            proxy_pass http://localhost:3010/webo/;
        }


        location / {
            proxy_pass http://localhost:3010/;
            #index  index.html index.htm;
        }

        
    }


  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值