卡伦湖 2023-03-29 23:36 采纳率: 0%
浏览 92
已结题

nginx反代,路径转发配置重定向问题?

nginx反向代理,配置文件路径转发,重定向地址问题?

    server {
 
           listen 80; #设置监听IPV4的地址与端口
          
           server_name  666666.dsto.com; 
           location / {
                root      /usr/share/nginx/html;    #设置WEB应用根目录
                index   index.html  index.htm;      #设置默认首页文件
           }
           
           location /are/ {
               #proxy_set_header Host $host;  #是否转发host,后端通过host域名,分析你访问具体那个域名
                   proxy_set_header  X-Real-IP        $remote_addr;  #获取前一节点的IP,并不一定是用户的真实IP。
                   proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for; #获取多层级的proxy,链路反追踪,HTTP的请求端真实的IP
                   proxy_set_header X-NginX-Proxy true;
                proxy_pass http://192.168.2.60:5005/;
       }

           location /baidu/ {
               #proxy_set_header Host $host;  
                   proxy_set_header  X-Real-IP        
                   proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for; 
                   proxy_set_header X-NginX-Proxy true;              
                proxy_pass https://www.baidu.com/;
       }
 
           error_page  404 403 500 502 503 504 /404.html;  #错误,访问404.html
           location = /404.html {    
                root  /usr/share/nginx/html; #定义404.html所在路径
           }
 
    }

如上nginx配置sever模块,进行路径代理,
进行测试,现在访问:

访问1:666666.dsto.com/are/ 则访问到 http://192.168.2.60:5005/ 此时浏览器地址栏:https://666666.dsto.com/are/
访问2:666666.dsto.com/baidu/ 则访问到 https://www.baidu.com/ 此时浏览器地址栏:https://666666.dsto.com/baidu/

此时问题出现。http://192.168.2.60:5005/ 这个服务里面有2级页面和登录验证。

问题:
_当我要访问http://192.168.2.60:5005/help 二级页面时候。实际我需要访问的是666666.dsto.com/are/help/ (手动输入地址访问没问题)
实际情况是访问:https://666666.dsto.com/are/ 转发到 http://192.168.2.60:5005/ 的主页,然后点击服务的子页面/help,
此时浏览器路径会跳转为https://666666.dsto.com/help/ 报错404,即 /are/ 路径没有被重定向写入访问地址。丢失了/are/导致转发失败。

我要实现的服务里点击help子页面,重定向地址为:https://666666.dsto.com/are/help/
即访问这个服务时候,所有服务内的子页面跳转 实现地址自动重定向加入/are/
_
查询过资料,配置文件重写host、端口、路径等资料,包括访问头。测试后未完美解决。
个人水平一般,非从业者,希望专业人士,给与解答,谢谢。配置文件该怎么写。申请帮助。

  • 写回答

3条回答 默认 最新

  • 小逸2023 2023-03-30 00:15
    关注
    该回答引用ChatGPT
    根据问题描述,您想要实现的效果是在访问 nginx 反向代理的服务时,所有服务内的子页面跳转时自动加入 /are/ 路径,以实现地址自动重定向。但是目前的配置文件中,访问子页面时会丢失 /are/ 路径,导致转发失败。
    针对这个问题,您可以尝试在 nginx 的配置文件中添加以下代码:

    location /are/ {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass http://192.168.2.60:5005/;
    # 添加以下代码,实现地址自动重定向加入 /are/ 路径
    proxy_redirect http://192.168.2.60:5005/ https://$host/are/;
    }

    这段代码中,我们添加了 `proxy_redirect` 指令,用于实现地址自动重定向加入 /are/ 路径。具体来说,当访问 http://192.168.2.60:5005/ 时,会自动重定向到 https://$host/are/,其中 $host 表示当前访问的域名。
    需要注意的是,这个方法只适用于访问 http://192.168.2.60:5005/ 的情况。如果您的服务有多个子页面,每个子页面的路径都不同,那么需要针对每个子页面分别配置 `proxy_redirect` 指令,以实现地址自动重定向加入对应的路径。
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月5日
  • 创建了问题 3月29日