当 nginx 反向代理中使用变量会导致目录代理失效

简介: 踩坑笔记

遇到的坑

今天遇到个小坑,当 nginx 目录级别的代理使用了变量之后,目录代理则只会代理到拼接完的目录,不会目录递归代理。

http {
    server {
        listen 80;
        server_name example.com;

        location /topic/ {
            proxy_pass https: //nba.com/abc/topic/;
        }
    }
}
AI 代码解读

比如当我们访问 https: //example.com/topic/abc 则会代理请求 https: /nba.com/abc/topic/abc

当想通过变量来控制域名的时候,发现 https: //example.com/topic/abc 则会代理请求 https: //nba.com/abc/topic/

http {
    server {
        listen 80;
        server_name example.com;
        
        set $b_host  "nba.com";

        if ($host = "pre-example.com") {
            set $b_host "pre-nba.com";
        }

        location /topic/ {
            proxy_pass https://$b_host/abc/topic/;
        }
    }
}
AI 代码解读

优化方案

问题还是因为代理规则不够规范,换成^/topic/(.*)来匹配目录,则可以解决问题

http {
    server {
        listen 80;
        server_name example.com;
        
        set $b_host  "nba.com";

        if ($host = "pre-example.com") {
            set $b_host "pre-nba.com";
        }

        location ~ ^/topic/(.*) {
            proxy_pass https://$b_host/abc/topic/$1;
        }
    }
}
AI 代码解读
目录
打赏
0
0
0
0
935
分享
相关文章
Nginx,正向代理
本文介绍了Nginx作为HTTPS正向代理的两种方案:HTTP CONNECT隧道(7层)和NGINX stream(4层)。HTTP CONNECT隧道需要客户端手动配置代理,通过CONNECT请求建立隧道;而NGINX stream则更适合透明代理,利用SNI字段实现流量转发。文章详细讲解了两者的原理、环境搭建、使用场景及常见问题,并提供了配置示例和最佳实践建议。内容转载自阿里云开发者社区@怀知的文章,推荐读者参阅原文获取更多信息。感谢您的阅读!
251 80
Nginx,正向代理
当你的nginx服务器和php服务器不在一起的时候,这个nginx 的root目录问题
两个服务器的网站代码目录需要对齐,docker容器里面也是一样
Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇
通过使用Nginx的反向代理功能,可以有效地提高Web应用的性能、安全性和可扩展性。配置过程中需要注意不同场景下的具体需求,如负载均衡、SSL终止和缓存策略等。正确配置和优化Nginx反向代理可以显著提升系统的整体表现。
201 20
配置Nginx反向代理时如何指定后端服务器的权重?
配置Nginx反向代理时如何指定后端服务器的权重?
229 61
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
234 60
配置Nginx反向代理实现SSL加密访问的步骤是什么?
我们可以成功地配置 Nginx 反向代理实现 SSL 加密访问,为用户提供更安全、可靠的网络服务。同时,在实际应用中,还需要根据具体情况进行进一步的优化和调整,以满足不同的需求。SSL 加密是网络安全的重要保障,合理配置和维护是确保系统安全稳定运行的关键。
317 60
nginx的正向代理和反向代理以及tomcat
Nginx的正向代理和反向代理功能在不同的场景中具有重要作用,正向代理主要用于客户端访问控制和匿名浏览,而反向代理则用于负载均衡和高可用性服务。Tomcat作为Java Web应用服务器,与Nginx结合使用,可以显著提升Web应用的性能和稳定性。通过合理配置Nginx和Tomcat,可以构建高效、稳定和可扩展的Web服务架构。
201 11
nginx反向代理bucket目录配置
该配置实现通过Nginx代理访问阿里云OSS存储桶中的图片资源。当用户访问代理域名下的图片URL(如 `http://代理域名/123.png`)时,Nginx会将请求转发到指定的OSS存储桶地址,并重写路径为 `/prod/files/2024/12/12/123.png`。
111 5
Nginx中配置HTTP2协议的方法
Nginx中配置HTTP2协议的方法
238 7
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等