在我们的前后端开发过程中,如果前端页面在请求后台服务器的时候,在url中都会存在/api这个请求前缀,但是我们的后台服务接口中却没有/api的路径,那么在不修改服务端代码的情况下,我们可以通过nginx来轻松解决这个问题。

前端请求路径为:http://192.168.xxx.xxx:8080/api/users/1725808854490013697实际上后端只存在的接口为:http://192.168.xxx.xxx:8080/users/1725808854490013697那么这种情况下,代码不经过修改的前提下,前端是无法正常访问后端接口为了实现上面的需求,我们可以通过nginx进行路径的重写然后再转发到服务器

我们需要在nginx的nginx.conf的配置文件中,添加以下反向代理的配置即可实现当前功能

location ^~ /api/ {

# 路径重写

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

# 反向代理配置,将请求转发到指定的服务

proxy_pass http://192.168.xxx.xxx:8080;

} 指令的详细说明

location ^~ /api/

"^~":表示普通字符串匹配上以后不再进行正则匹配 以/api/开头的请求,都会匹配上 rewrite ^/api/(.*)$ /$1 break;

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

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

proxy_pass:​​​​​​​反向代理 路径重写后的请求,将会转发到后端的​​​​​​​http://192.168.xxx.xxx:8080服务器

精彩内容

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: