如何在nginx中进行路径的重写并进行转发到指定服务器

  1. 在我们的前后端开发过程中,如果前端页面在请求后台服务器的时候,在url中都会存在/api这个请求前缀,但是我们的后台服务接口中却没有/api的路径,那么在不修改服务端代码的情况下,我们可以通过nginx来轻松解决这个问题。
    1. 前端请求路径为:http://192.168.xxx.xxx:8080/api/users/1725808854490013697
    2. 实际上后端只存在的接口为:http://192.168.xxx.xxx:8080/users/1725808854490013697
    3. 那么这种情况下,代码不经过修改的前提下,前端是无法正常访问后端接口
  2. 为了实现上面的需求,我们可以通过nginx进行路径的重写然后再转发到服务器
    1. 我们需要在nginx的nginx.conf的配置文件中,添加以下反向代理的配置即可实现当前功能
      1.

      java 复制代码
              location ^~ /api/ {
                  # 路径重写
                  rewrite ^/api/(.*)$ /$1 break;
                  # 反向代理配置,将请求转发到指定的服务
                  proxy_pass http://192.168.xxx.xxx:8080;
              }
    2. 指令的详细说明

      1. location ^~ /api/

        1. "^~":表示普通字符串匹配上以后不再进行正则匹配

        2. 以/api/开头的请求,都会匹配上

      2. rewrite ^/api/(.*) /1 break;

        1. rewrite:路径重写

        2. 这里写的是一个正则表达式,代表如果请求路径是以/api/开头,后面的请求路径任意,此时将原始的url路径重写为/$1,这里的$1指代的就是通配符 .* 这一块的内容。比如:

          html 复制代码
          /api/users/1725808854490013697 -------> ^/api/(.*)$ --------> 此时 (.*) 匹配的就是 users/1725808854490013697 ------> 最终重写为/$1 即 /users/1725808854490013697
      3. proxy_pass http://192.168.xxx.xxx:8080;

        1. proxy_pass:反向代理

        2. 路径重写后的请求,将会转发到后端的http://192.168.xxx.xxx:8080服务器

相关推荐
徐同保39 分钟前
nginx转发,指向一个可以正常访问的网站
linux·服务器·nginx
HIT_Weston41 分钟前
95、【Ubuntu】【Hugo】搭建私人博客:_default&partials
linux·运维·ubuntu
实心儿儿1 小时前
Linux —— 基础开发工具5
linux·运维·算法
oMcLin1 小时前
如何在SUSE Linux Enterprise Server 15 SP4上通过配置并优化ZFS存储池,提升文件存储与数据备份的效率?
java·linux·运维
SelectDB2 小时前
驾驭 CPU 与编译器:Apache Doris 实现极致性能的底层逻辑
运维·数据库·apache
❀͜͡傀儡师2 小时前
docker部署Arcane容器可视化管理平台
运维·docker·容器
老姚---老姚2 小时前
docker常用命令
运维·docker·容器
深圳安锐科技有限公司3 小时前
边坡倾斜自动化监测 倾角仪 如何通过安锐云查看监测曲线?
运维·视觉检测·实时监测·自动化监测·结构健康监测·倾斜角度监测·倾角传感器
咕噜企业分发小米5 小时前
有哪些开源的直播云服务器安全防护方案?
运维·服务器·云计算
C_心欲无痕5 小时前
nginx - 开启 gzip 压缩
运维·前端·nginx