本文介绍: 路径重写后的请求,将会转发到后端的​​​​​​​http://192.168.xxx.xxx:8080服务器。开头,后面的请求路径任意,此时将原始的url路径重写为。”^~”:表示普通字符串匹配上以后不再进行正则匹配这里写的是一个正则表达式,代表如果请求路径是以。指代的就是通配符 .* 这一块的内容proxy_pass:​​​​​​​反向代理。以/api/开头的请求,都会匹配上。rewrite:路径重写
  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. 我们需要nginxnginx.conf的配置文件中,添加以下反向代理配置即可实现当前功能
      1.         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指代的就是通配符 .* 这一块的内容。比如:

          1. /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服务器

原文地址:https://blog.csdn.net/weixin_41926152/article/details/134656038

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_2972.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注