# 本地代理
本地 Proxy 方案,包括配置方式、匹配规则、请求示例及多环境切换等 • 调研&现状: ◦ startdt-boss-admin:if-else 根据前端域名跟后端域名的绑定关系,判断当前环境下使用的网关域名 ◦ multi-dingtalk-gov:对原有 if-esle 方式的改良,使用 .env.[mode] 配置文件配合 script 指定环境 ◦ china-telecom-mini-program:小程序由于是发布到应用市场,不是在自己服务器上,所以只能写死服务器地址,无法直接代理 ◦ simba:使用 nginx 代理转发,抽离网关地址相关配置参数,网关地址无论怎么变,都和前端工程无关 • Proxy 信息嵌入工程有什么问题: ◦ 安全性:环境变量会随着构建打包嵌入到输出代码,意味着任何人都有机会能够看到它,尤其是后端网关 ◦ 便捷性: ▪ 本地开发环境下,进行 mock 或者联调环境切换时,每次修改配置文件,都要重启工程,工程越大,耗时越长 ▪ 后端网关地址调整,前端要对应修改,重新提交代码 • 需要做什么: ◦ 如果是使用脚手架创建的新项目,且环境配置维护成本较低的情况,建议使用 .env ◦ 如果是老项目,或者需要针对不同客户单独部署的情况,建议使用 nginx
• 以 nginx 为例,讲解不同环境的配置,和多环境切换
nginx server配置,在 nginx.conf 中增加一条记录 http: { ... server { listen 80; server_name _; # _表示任何ip都可以访问,,# 表示注释
location / { proxy_pass http://127.0.0.1:8080; # 前端服务地址 }
location /api/ { proxy_pass http://dev-soul-server.k8s.startdtapi.com/simba; # 后台开发环境网关地址,http 请求转发 #proxy_pass http://xxx-soul-server.k8s.startdtapi.com/simba; # 后台xxx环境网关地址,http 请求转发 }
location /wsbackend/ { proxy_pass http://dev-soul-server.k8s.startdtapi.com/simba/; # 后台开发环境网关地址,websocket 请求转发 #proxy_set_header Host $host; #注意:nginx 多次转发时,该请求头要注释掉 proxy_http_version 1.1; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto http; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; }
location /iframe-jupyter { rewrite ^/(.*) http://xxx.xxx.xxx.xxx/; # iframe-src 地址,302 重定向 } } ... }
nginx 常用指令:nginx -s reload|reopen|stop|quit #重新加载配置|重启|停止|退出 nginx