nginx - nginx 子目录重定向到根目录
问题描述
我已经设置了两个 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
ps我现在已经通过以下块解决它
location /bar {
return 301 $scheme://$host/foo/bar/;
}
但这仅在我有一个具有此文件夹结构的容器时才有效,当我添加具有相同文件夹结构的第二个容器时将无济于事
解决方案
推荐阅读
- java - 带有旧 TableModel 的 JavaFx TableView
- docker - docker上的couchdb:打开控制台
- r - 查找最近的封闭 FALSE 值位置
- angularjs - 如何从Angular Js中的结果数据中删除空格
- javascript - 如何在 Chart JS 中使用 x 和 y 从数据中堆叠条形图
- javascript - 使用 javascript 替换链接中的元素
- javascript - 通过按钮触发选项卡单击事件
- php - 在php中从关联数组索引中分离数据
- java - 使用 java ReentrantLock 时需要给变量添加 volatile 吗?
- ejabberd - 多个国家/地区的 ejabberd 设置