同一域名多个webapp的配置

当一个系统功能越来越丰富时,往往需要将一些功能相对独立的模块剥离出来,独立维护。这样的话,通常,会有多个 webapp。

举个例子:假如 shop.dazhairen.com 站点有好几个模块,goods(商品)、marketing(营销)、user(用户中心)、order(订单)。访问这些应用的方式通过上下文(context)来进行区分:

shop.dazhairen.com/goods/

shop.dazhairen.com/marketing/

shop.dazhairen.com/user/

shop.dazhairen.com/order/

http 的默认端口号是 80,如果在一台服务器上同时启动这 3 个 webapp 应用,都用 80 端口,肯定是不行的。所以,这三个应用需要分别绑定不同的端口号。

用户在实际访问 shop.dazhairen.com.com 站点时,访问不同 webapp,总不能还带着对应的端口号去访问吧。所以,这里需要用到反向代理来做处理。

#实际的服务列表
upstream product_server{
    server shop.dazhairen.com:8081;
}

upstream marketing_server{
    server shop.dazhairen.com:8082;
}

upstream user_server{
    server shop.dazhairen.com:8083;
}

upstream order_server{
    server shop.dazhairen.com:8084;
}

server {

    #默认指向product的server
    location / {
        proxy_pass http://product_server;
    }

    location /product/{
        proxy_pass http://product_server;
    }

    location /marketing/{
        proxy_pass http://marketing_server;
    }

    location /user/{
        proxy_pass http://user_server;
    }

    location /order/{
        proxy_pass http://order_server;
    }
}