我正在尝试在 Nginx 反向代理后面运行 pgadmin4,但我遇到了一个问题,因为我需要 pgadmin 知道它在 myhost.com/pgadmin 而不仅仅是在 myhost.com .... 或者至少我认为那就是问题所在。
在其他网络应用程序中,通常有一些名为 webroot 的设置或类似的设置来指定它应该认为自己位于那里,但对于 pgadmin4,我找不到类似的东西。
这个设置是否存在,如果存在,它在哪里?
如果没有,是否有解决方法?
我正在尝试在 Nginx 反向代理后面运行 pgadmin4,但我遇到了一个问题,因为我需要 pgadmin 知道它在 myhost.com/pgadmin 而不仅仅是在 myhost.com .... 或者至少我认为那就是问题所在。
在其他网络应用程序中,通常有一些名为 webroot 的设置或类似的设置来指定它应该认为自己位于那里,但对于 pgadmin4,我找不到类似的东西。
这个设置是否存在,如果存在,它在哪里?
如果没有,是否有解决方法?
您在这里遇到的核心问题是
pgadmin4
后端对传递给它的 URI高度敏感。它也是静态配置的,因此我们无法在 URI 中添加“前缀”以了解如何处理它。因此,由于我们无法更改
pgadmin4
在前端服务的“路径”,我们必须采取更邪恶的方式将其作为子域提供服务——pgadmin.domain.tld
使用相应的 SSL 证书。nginx 配置位如下:
这假定您已经拥有或知道如何获取 SSL 证书以在配置中使用。但是,这超出了问题的范围。
不幸的是,这是让 pgadmin4 与“反向代理”一起工作的最简单的解决方案,但您将无法在现有站点的位置块内轻松完成此操作。它已经被要求了几年,但从未开发过。
只要确保您还强化了服务器并关闭了不应直接访问的
pgadmin4
端口(例如来自“外部”的端口)。否则可以轻松绕过反向代理组件。根据https://www.pgadmin.org/docs/pgadmin4/latest/container_deployment.html你应该添加一个请求头。假设您将 pgAdmin4 放在 /pgadmin4 而不是 /
proxy_set_header X-Script-Name /pgadmin4;
RequestHeader set X-Script-Name /pgadmin4