nginx访问地址重定向路径局部替换

文章目录

  • 前提
  • 需要注意的地方
  • 使用nginx进行转换
    • [方法一:使用 return 指令](#方法一:使用 return 指令)
    • [方法二:使用 rewrite 指令](#方法二:使用 rewrite 指令)
    • [方法三:使用 try_files 指令](#方法三:使用 try_files 指令)

前提

有时候,http请求的路径经常加了一些前缀、或者删掉一些前缀,这就导致之前固定的地址无法访问,例如:

以前的地址A为:

复制代码
http://192.168.1.130:9000/user/get?id=5566

现在的地址B为

复制代码
http://192.168.1.130:9000/admin/user/get?id=5566

那么问题来了,地址A已经失效了,但是需要还是想通过地址A去访问。解决办法自然是转发到地址B

需要注意的地方

1、服务必须是通过nginx进行部署的

2、每次修改nginx.conf的文件,需要nginx -s reload加载,以及刷新浏览器页面缓存

3、以下案例都是亲着测试的,真实可靠

使用nginx进行转换

在 Nginx 中,有多种方法可以将访问 http://192.168.1.130:9000/user/get?id=5566 的请求跳转到 http://192.168.1.130:9000/admin/user/get?id=5566 以下是几种常见的方法:

方法一:使用 return 指令

复制代码
nginx
server {  
    listen 9000;  
    server_name localhost;  
  
    location /user {  
        return 301 http://localhost:9000/admin$request_uri;  
    }  
}

在上面的配置中,location /user 指令定义了匹配的请求路径为 /user。return 指令用于返回重定向状态码和重定向目标地址。301 是永久重定向的状态码,http://localhost:9000/admin$request_uri 是重定向的目标地址。

方法二:使用 rewrite 指令

复制代码
nginx
server {
    listen 9000;
    server_name localhost;

    location /user {
        rewrite ^/user/(.*)$ /admin/user/$1 permanent;
    }
}

在上面的配置中,location /user 指令定义了匹配的请求路径为 /user。rewrite 指令用于将匹配到的请求路径重写为新的目标地址,并使用 permanent 标志表示永久重定向。

方法三:使用 try_files 指令

复制代码
nginx
server {  
    listen 9000;  
    server_name localhost;  
  
    location /user {  
        try_files $uri @redirect;  
    }  
  
    location @redirect {  
        return 301 http://localhost:9000/admin$request_uri;  
    }  
}

在上面的配置中,location /user 指令定义了匹配的请求路径为 /user。try_files 指令尝试访问请求路径对应的文件或目录,如果找不到,则执行 @redirect 命名位置块中的指令。在 @redirect 位置块中,使用 return 指令进行重定向。

这些方法都可以实现将访问 http://localhost:9000/user 的请求跳转到 http://localhost:9000/admin/user。具体使用哪种方法取决于你的需求和服务器环境。请确保在修改 Nginx 配置文件之前备份原始文件,并在进行更改后重新加载 Nginx 配置以使其生效。

相关推荐
虎头金猫2 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
还是大剑师兰特2 天前
解决nginx错误:http://localhost:7000正常,http://localhost:7000/map 报错404
nginx·大剑师
AI职业加油站2 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
此冬歌咏2 天前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
xing-xing2 天前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker
-梅2 天前
linux(8) 软硬链接
linux·运维·服务器
张洛闻Eren2 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
其实防守也摸鱼2 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
布裘2 天前
【银河麒麟】V4桌面图标消失,右击鼠标没反应排查
运维·银河麒麟·桌面环境
懂软件的胡子个哥2 天前
微信机器人为什么需要“回复候选”而不是所有 AI 内容直接发送
运维·微信·自动化·wechatapi·个人微信号二次开发