通过 ProxyPass 可通过子域访问 Docker 应用程序

通过 ProxyPass 可通过子域访问 Docker 应用程序

昨天,我在 VPS 上首次使用 docker 并安装了 Redmine。设置完成后,我决定通过子域而不是端口访问它。

在我的 Apache 主机设置中,我使用 ProxyPass 来实现这一点,并且它可以正常工作:

ProxyPass / http://127.0.0.1:22679/
ProxyPassReverse / http://127.0.0.1:22679/

这是我的虚拟主机配置:

<VirtualHost *:443>
    ProxyPass / http://127.0.0.1:22679/
    ProxyPassReverse / http://127.0.0.1:22679/
    ServerName redmine.example.com
</VirtualHost>

这可以通过 https 实现 (https://redmine.example.org),但我有点担心安全性和 ProxyPass 的正确使用。我会通过 iptables 阻止端口,这样它就无法从外部访问,只能从我的本地主机访问。

所以我想问的是:这完全没问题还是我做错了?另外,我从 localhost 获取https://http://流量对我来说似乎有点“奇怪”。我在互联网上搜索了如何使 docker 应用程序可通过子域访问,但我唯一找到的就是这个解决方案ProxyPass

答案1

对在本地端口上运行的应用程序执行 ProxyPass 是一种非常常见的方法。您的配置包括那里所需的一切,并且完全没问题。

由于一次只能有一个进程绑定到端口 443 (HTTPS),因此使用 Apache 之类的 Web 服务器作为反向代理。

至于安全性,如果您不能直接将应用程序配置为仅在本地主机上监听,那么最佳做法是将 iptables 配置为仅允许从本地主机到该端口的连接。

使用纯 http 进行反向代理 (Apache) 和后端 (Redmine) 之间的通信在这里没有问题,因为它们之间的通信永远不会离开主机。这样,您还可以在一个地方 (Apache) 配置 TLS 证书,而不必担心您的应用程序本身是否在安全配置中支持 TLS。

对于安全的 Apache TLS 配置,您可以使用例如https://mozilla.github.io/server-side-tls/ssl-config-generator/

相关内容