Bookstack 的 Nginx 反向代理子目录 vai proxy_pass

Nginx reverse proxy subdirectory vai proxy_pass for Bookstack

我是来自 https://github.com/linuxserver/docker-bookstack

的 运行 Bookstack docker 容器

容器在 Ubuntu 主机上 运行,当我通过它的 http://:

直接访问它时,我可以完美地使用它

我在 Windows 主机上有一个 nginx 服务器 运行,我将对其进行配置,以便在我访问 https://myhost.tld/kb 时将其代理到 Ubuntu 主持人。以下是为此的 ngnix 配置:

        location ~/kb(.*)$ {
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header Host $host;
            proxy_pass http://<ubuntu-ip>:<port>;
        }

在 Bookstack 容器中,我将 .env 文件 APP_URL 设置为 https://myhost.tld/kb

当我访问 https://myhost.tld/kb 时,任何静态资源都不会加载。

我已经尝试了位置匹配的各种组合,例如 /kb/ url 在位置 url 和 [=38] 中使用 adding/removing 尾部斜杠的组合重写等=] url 但无济于事。

直接从 Windows 主机提供静态资产不是一个选项,因为我的计划是在不同的目录提供多个 docker 应用程序,所以我正在寻找一个我能够的解决方案简单地指导子目录从不同的容器提供服务。

我错过了什么?

所以我最终进行了更多试验,最终发现了有效方法:

        location ~/kb(.*)$ {
         proxy_pass_header Authorization;
            proxy_pass http://<ip>:<port>$is_args$args;
            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_http_version 1.1;
            proxy_set_header Connection "";
            proxy_buffering off;
            client_max_body_size 0;
            proxy_read_timeout 36000s;
            proxy_redirect off;
        } 

特别是,我必须使用 $is_args$args 来转发查询词。

我不完全明白此配置与我在问题中发布的配置之间的区别。所以如果有人能解释一下,对其他人的概念理解会有帮助。

致谢:https://www.techandme.se/set-up-nginx-reverse-proxy/