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 与奇怪现象之后的妥协,也算是一个比较好的解决方案吧。如果哪位大神知道更优雅的解决方案,请一定让我知道!
利用反向代理与负载均衡能实现吗?我是这样实现的
参考这个 博客:Laravel-配置 Nginx 文件夹 / 子目录访问-重定向方式