首页 > 系统相关 >hash模式下前后端路径相同时,nginx如何转发

hash模式下前后端路径相同时,nginx如何转发

时间:2023-03-21 11:12:24浏览次数:33  
标签:hash 前端 nginx 域名 proxy vv 转发

背景:前期没有进行前后端分离,前端页面由后端转发,即路由的前缀由后端的接口前缀决定;现在想要做到不改变路径做前后端分离且容器化。

  • 前后端分离后,前后端的转发要根据路径前缀做转发,假如项目没有对外开放,内部使用,前端直接在router添加baseUrl,url会自动带上这个路径,以后访问路径需要更改;但是如果项目已经对外使用,修改路径成本太大。下边针对这种情况做处理:
  • 例:后端的接口前缀为vv,nginx内做转发为:
location /vv/ {
proxy_pass http://**/vv/;
}

nginx的转发方式为:遇到url带portal/的转发到对应容器模块;

  • 前端项目的路由模式为hash时,本来以为nginx的匹配规则改为为 vv/# 时,转发到前端的模块下,实际上失败了,浏览器访问https://域名/vv/#/pages/login/login 时,实际浏览器只发送了https://域名/vv/ 到服务器,如下:

    那么这种方法就不可行了, 换个思路想: 浏览器的network下,可以看到前端资源都在vv/static下
    配置nginx为:
location =/vv/ {
proxy_set_header host ingress.域名;
proxy_pass http://vvk8s/portal/;

}
location ~/vv(.*)static/ {
proxy_set_header host ingress.域名;
proxy_pass http://vvk8s;
}
  1. 第一条:为精确匹配到/vv/时,转发到ingress.域名的下的vv模块
  2. 第二条:将前端js资源的请求转发到前端的vv容器模块下

注意点: 这里新加了跟后端作区分的ingress配置

现在访问 https://域名/vv/#/pages/login/login 时,先根据/vv/转发到前端容器模块,接着对静态资源发起请求时,再次转发到vv的前端容器模块,返回前端资源。

额外: 前端容器的nginx配置通用模板:

location /vv {
if ($request_filename ~* .*\.(?:htm|html)$){
add_header Cache-Control no-cache,no-store,must-revalidate;
}
root /apprun/html/;
try_files $uri /vv/index.html;
index index.html index.htm;
}

标签:hash,前端,nginx,域名,proxy,vv,转发
From: https://www.cnblogs.com/alaner/p/16443465.html

相关文章

  • nginx 将http的请求转发为https
    使用nginx实现 原http的请求转发为https的请求我使用的版本为  nginx-1.22.1修改nginx.confserver{listen80;server_nameloca......
  • Nginx 配置文件说明
    nginx.confuserwwwwww;#Nginx的worker进程运行用户以及用户组worker_processes4;#启动进程数,通常设置成和cpu的数量相等或auto#worker_processesauto;#以下参数......
  • hashmap,hashtabl,hashtree,linkedhashmap区别分析
    java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMapHashtableLinkedHashMap和TreeMap.Map主要用于存储健值对,根据......
  • 浅谈集合HashSet
    HashSet简介HashSet集合继承于Collection集合,Collection集合的常用方法也在HashSet中同样适用。底层原理:HashSet集合底层采用哈希表存储数据,底层是new了一个HashMap,a......
  • Nginx服务配置及相关模块
    一、Nginx配置文件1.主配置文件解析①yum安装主配置文件位置:/etc/nginx/nginx.conf②编译安装主配置文件位置:/编译安装路径/conf/nginx.conf1nginx主配置文件:nginx......
  • Java HashMap为什么线程不安全
    一、学习目标1、HashMap线程不安全原因:原因:JDK1.7中,由于多线程对HashMap进行扩容,调用了HashMap#transfer(),具体原因:某个线程执行过程中,被挂起,其他线程已经完成数据迁......
  • Nginx代理testlink配置说明
    upstreamtestlink{server192.168.8.253:80weight=1max_fails=3fail_timeout=3s;}server{listen80;listen443ssl;server_nametestlink.test.com;ssl_certificate......
  • Nginx和tomcat实现负载均衡
    拓扑图:​推荐步骤:​Nginx服务器开启路由转发功能,客户端和tomcat服务器配置IP地址设置正确安装tomcat服务器配置网站安装Nginx代理和负载均衡功能配置DNS服务器域名解析,客户......
  • Nginx 相关
    1.负载均衡与高可用upstreambackServer{serverlocalhost:8080; serverlocalhost:6001; }server{listen8088......
  • Nginx 学习(二)
    Nginx简介Nginx是开源、高性能、高可靠的Web和反向代理服务器,而且支持热部署,几乎可以做到7*24小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务......