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


    前提

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

    http://192.168.1.130:9000/user/get?id=5566
    
    • 1

    现在的地址B为

    http://192.168.1.130:9000/admin/user/get?id=5566
    
    • 1

    那么问题来了,地址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;  
        }  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在上面的配置中,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;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在上面的配置中,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;  
        }  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

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

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

  • 相关阅读:
    初识Spring Boot
    MySQL处理Json数据
    milvus数据库-管理数据库
    ouster-32激光雷达使用---设备连接的网络配置
    前端常用网站
    zeek学习(二)
    【unity3D】如何修改相机的默认视角
    Android使用AOP切面编程
    Spring AOP(二)自定义注解
    【CV】第 9 章:使用多任务深度学习的动作识别
  • 原文地址:https://blog.csdn.net/qq_34168515/article/details/133762774