我目前在单个节点上运行了几个 docker 容器,其中两个是 Apache web 服务器(我已将其配置为反向代理)和 Portainer(允许我通过 GUI 管理我的容器)。
我曾尝试关注此主题:https://github.com/portainer/portainer/issues/488但无法将流量从 Apache 转发到 Portainer。
这是我的 httpd.conf 文件:
<Location /portainer/>
AuthBasicProvider ldap
AuthLDAPURL someldap
AuthType Basic
AuthName SomeAuthName
require valid-user
</Location>
ProxyPass /portainer/api/websocket/ ws://172.18.0.8:9000/api/websocket/
</VirtualHost>
有任何想法吗?
谢谢你!
答案1
我通常不建议在 Location 内添加 proxypass 指令,但由于您已经有一个影响相同 URI 的 Location,Location 可能会覆盖 ProxyPass,因为一个是在虚拟主机上下文中定义的,而 Location 本身是虚拟主机的子上下文,因此它会覆盖虚拟主机。因此,请先尝试定义 ProxyPass 指令,或者尝试在 Location 内定义 ProxyPass,如下所示:
<Location /portainer/>
AuthBasicProvider ldap
AuthLDAPURL someldap
AuthType Basic
AuthName SomeAuthName
require valid-user
</Location>
<Location /portainer/api/websocket/>
ProxyPass ws://172.18.0.8:9000/api/websocket/
</Location>
定义位置的正确顺序是首先是全局路径,然后再是特定路径(使用 proxypass 则完全相反),因此如果您以这种方式定义它,请确保一个路径不会与另一个路径重叠,或者像我之前提到的那样,可能在位置指令上方定义 proxypass 指令。
请记住您在合并配置时可能遇到问题。