网站有多个 webapp 的配置

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

举个例子:假如 www.helloworld.com 站点有好几个 webapp,finance(金融)、product(产品)、admin(用户中心)。访问这些应用的方式通过上下文(context)来进行区分:

www.helloworld.com/finance/

www.helloworld.com/product/

www.helloworld.com/admin/

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

那么,问题来了,用户在实际访问 www.helloworld.com 站点时,访问不同 webapp,总不会还带着对应的端口号去访问吧。所以,你再次需要用到反向代理来做处理。

配置也不难,来看看怎么做吧:

  1. http {
  2. #此处省略一些基本配置
  3. upstream product_server{
  4. server www.helloworld.com:8081;
  5. }
  6. upstream admin_server{
  7. server www.helloworld.com:8082;
  8. }
  9. upstream finance_server{
  10. server www.helloworld.com:8083;
  11. }
  12. server {
  13. #此处省略一些基本配置
  14. #默认指向product的server
  15. location / {
  16. proxy_pass http://product_server;
  17. }
  18. location /product/{
  19. proxy_pass http://product_server;
  20. }
  21. location /admin/ {
  22. proxy_pass http://admin_server;
  23. }
  24. location /finance/ {
  25. proxy_pass http://finance_server;
  26. }
  27. }
  28. }