nginx 如何整合多套系统?

nginx 整合多系统

标签(空格分隔): nginx

一、背景

公司已部署上线了多套系统:
例如

  • oa 办公系统 部署在 192.168.200.1:8077 上
  • 档案系统 部署在 192.168.200.2:8066 上

现在要做的是搭一台 nginx 服务器作为总入口,反向代理挂上各个系统

由于牵涉备案问题所以,要求是用二级目录,而不能用二级域名

类似如:www.global.com/oa/ 挂 oa系统 www.global.com/da/ 挂 档案系统


1、初次尝试

http{
    server {
        listen 80;
        server_name www.global.com;

         ......

        location /da/ {
            proxy_pass              http://192.168.200.2:8066/;
            proxy_redirect          off; 
            proxy_set_header        X-Real-IP       $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        location ~ ^/oa/ {
            rewrite                 ^/oa/(.*) /$1 break;
            proxy_pass              http://192.168.200.1:8077;
            proxy_redirect          off;
            #proxy_set_header       Host $host;
            proxy_set_header        X-Real-IP       $remote_addr; 
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for; 
        }
    }
}

这里档案和oa 分别采用两种形式,这些配置都是在网上搜的 大同小异。但是有很多问题,例如静态文件在代码中如果是 绝对路径就会报404

被代理服务器如果 有路径重写,不能刷新

还有一个坑 网上的配置都有这么一段 proxy_set_header Host $host 这一段不能加,我理解的是网上的示例大多都是代理到本机的不同端口,我们这里在不同的服务器上,不知道理解的对不对,就是实验下来,这一段加上就不行!

2、绕路妥协

http{
    server {
        listen 80;
        server_name www.global.com;
        ......

        location ~ ^/oa/ {
            rewrite                 ^/oa/(.*)   http://www.global.com:86/$1 break;
        }
    }

    server {
        listen 86;
        server_name www.global.com;

        location / {
            proxy_pass              http://192.168.200.1:8077/;
            proxy_redirect          off;
            proxy_set_header        X-Real-IP       $remote_addr; 
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        }

    }
}

这是经过无数404 与奇怪现象之后的妥协,也算是一个比较好的解决方案吧。如果哪位大神知道更优雅的解决方案,请一定让我知道!

tsfh
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2
mouyong

利用反向代理与负载均衡能实现吗?我是这样实现的

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!