首页 > 解决方案 > 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/;
}

但这仅在我有一个具有此文件夹结构的容器时才有效,当我添加具有相同文件夹结构的第二个容器时将无济于事

标签: nginxdocker-composenginx-reverse-proxy

解决方案


推荐阅读