美文网首页
nginx 处理项目前缀

nginx 处理项目前缀

作者: webmrxu | 来源:发表于2019-01-10 14:01 被阅读0次

最近在部署项目时,服务器代理有点多,转发有点混乱,导致部署的生产项目接收不到请求,或者请求路径错误。

经过不断的折腾,使用多个nginx服务器进行转发模拟真实环境,进行测试,总算是可以工作了。现在就整理下测试过程,以及nginx转发配置,处理项目前缀问题,添加项目前缀或者删除项目前缀。

需求

1 项目开发完成,前后端分离部署。
2 前端开发使用的是静态资源进行开发,使用 htmljscss 以及一些图片图标文件。
部署时直接将前端目录以及文件放置在nginx 服务 html/ 文件夹下
3 后端使用的是springBoot 开发,部署时打包的是 jar 包。
4 后端项目前缀 /fall-admin/v1
5 前端项目部署成功后本地访问路径:http://127.0.0.1:83/content/shareactivity/index.html
6 后端项目部署成功后本地访问路径:http://127.0.0.1:84/fall-admin/v1/homepages/findHomePage

请求转发过程

1 外网访问公司总部服务器,由公司总部服务器进行统一转发到各个子公司, 例如: 总部在北京,子公司在深圳、上海、广州等。
2 子公司服务器接收总部服务器转发的请求。
3 再由子公司总代理服务器转发到内部各个服务器。

模拟请求路径

前端请求页面服务器转发过程

1 客户端请求路径:
http://127.0.0.1:81/sz/admin/cppony/content/shareactivity/index.html
2 客户端请求到公司总部服务器,转发请求到深圳子公司,请求路径如下(少了sz前缀):
接收的完整路径:http://127.0.0.1:81/sz/admin/cppony/content/shareactivity/index.html
转发后完整路径:http://127.0.0.1:82/admin/cppony/content/shareactivity/index.html
3 深圳子公司接收请求,转发到项目服务器
接收的完整路径:http://127.0.0.1:82/admin/cppony/content/shareactivity/index.html
转发后完整路径(前端):http://127.0.0.1:83/content/shareactivity/index.html

前端http get请求路径服务器转发过程

1 客户端请求路径:
http://127.0.0.1:81/sz/admin/fall-admin/v1/homepages/findHomePage
2 客户端请求到公司总部服务器,转发请求到深圳子公司,请求路径如下(少了sz前缀):
接收的完整路径:http://127.0.0.1:81/sz/admin/fall-admin/v1/homepages/findHomePage
转发后完整路径:http://127.0.0.1:82/admin/fall-admin/v1/homepages/findHomePage
3 深圳子公司接收请求,转发到项目服务器
接收的完整路径:http://127.0.0.1:82/admin/fall-admin/v1/homepages/findHomePage
转发后完整路径(后端):http://127.0.0.1:84/fall-admin/v1/homepages/findHomePage

在以上的转发路径中,处理了各种项目前缀;
例如删除前缀:szadmincppony
例如后端项目前缀处理:fall-admin

各个nginx服务config 配置

测试有有四台服务器(4个nginx服务模拟测试,使用端口不同模拟不同服务器):
81 公司总部服务器
82 深圳子公司总代理服务器
83 深圳子公司内部前端服务器
84 深圳子公司内部后端服务器

81服务器

# 81 公司总部服务器
# 接收:http://127.0.0.1:81/sz/admin/cppony/content/shareactivity/index.html
# 转发:http://127.0.0.1:82/admin/cppony/content/shareactivity/index.html

location /sz/admin/ { 
    proxy_pass http://127.0.0.1:82/admin/;
}

82服务器(转发到前端)

# 82 深圳子公司总代理服务器
# 接收:http://127.0.0.1:82/admin/cppony/content/shareactivity/index.html
# 转发:http://127.0.0.1:83/content/shareactivity/index.html

location /sz/admin/ { 
    proxy_pass http://127.0.0.1:83/;
}

82服务器(转发到后端)

# 82 深圳子公司总代理服务器
# http://127.0.0.1:82/admin/fall-admin/....
# http://127.0.0.1:84/content/fall-admin/....

location /sz/admin/fall-admin/ { 
    proxy_pass http://127.0.0.1:84/fall-admin/;
}

当没有项目前缀时,可根据请求方法(GET, POST)进行转发

location / {
   if ($request_method ~ ^(GET|POST)$) {
       proxy_pass http://127.0.0.1:8004;
   }
   root   html;
   index  index.html index.htm;
 }

相关文章

网友评论

      本文标题:nginx 处理项目前缀

      本文链接:https://www.haomeiwen.com/subject/lsiorqtx.html