如何解决nginx 子目录重定向到 root
我已经设置了两个 nginx 代理 代理 #1 将 example.com/foo 传递给代理 #2 代理 #2 是一个 nginx docker 容器,它应该将 example.com/foo/bar 传递给 bar 容器
但是当我使用 app/home
形式的相对路径时,它会重定向到 example.com/foo/app/home
而不是 example.com/foo/bar/app/home
nginx default.conf 包含此内容以将其传递给 bar 容器:
location /bar {
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_set_header Accept-Encoding "";
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-Forwarded-Host $host:server_port;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Proto $scheme;
add_header Front-End-Https on;
proxy_buffering off;
proxy_pass https://bar/
}
基于 https://www.nginx.com/resources/wiki/start/topics/examples/likeapache/ 我试图添加 root /bar
无效
代理 1 的块看起来像这样:
location /foo {
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 HTTP_504;
proxy_set_header Accept-Encoding "";
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-Forwarded-Host $host:$server_port;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Proto $scheme;
add_header Front-End-Https on;
proxy_buffering off;
proxy_pass http://ip-of-bar/;
}
最后,代理 #2 的日志显示我确实命中了 /bar
,但随后它尝试命中 /app/home
而不是 /bar/app/home
有没有办法让 nginx 正确地设置它从 example.com/foo/bar
而不是 example.com/foo/bar
附言 我已经通过以下块解决了这个问题
location /bar {
return 301 $scheme://$host/foo/bar/;
}
但这仅在我有一个具有此文件夹结构的容器时才有效,当我添加具有相同文件夹结构的第二个容器时将无济于事
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。