使用Apache 2.4在Docker容器中运行Portainer mod_proxy和基本身份验证
问题描述:
问:如何使用基本身份验证将Apache 2.4配置为Portainer的反向代理?使用Apache 2.4在Docker容器中运行Portainer mod_proxy和基本身份验证
Portainer是一个用于管理Docker容器的UI。 Portainer文档有一个示例nginx configuration,但不幸的是没有用于Apache。
答
答:你需要用flag --no-auth启动Portainer并使用mod_proxy_wstunnel。
开始Portainer与--no-auth。 我用下面的码头工人撰写文件:
portainer:
image: portainer/portainer
container_name: "portainer-app"
privileged: true
command: --no-auth
ports:
- 9000:9000
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /srv/docker/portainer/data:/data
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
environment:
TZ: "Europe/Berlin"
配置基本身份验证为你的Apache域。 启用mod_proxy_wstunnel。 添加以下配置:
<Location /portainer/>
ProxyPass http://localhost:9000/
ProxyPassReverse http://localhost:9000/
RequestHeader set Connection ""
</Location>
<Location /portainer/api/websocket/>
RequestHeader set Upgrade $http_upgrade;
RequestHeader set Connection "upgrade"
ProxyPass ws://localhost:9000/api/websocket/
</Location>
这些设置大多是为我工作,但不幸的是,我无法在Portainer使用控制台功能。当试图使用控制台时,我的apache日志吐出以下错误: AH01144:没有协议处理程序对URL/portainer/api/websocket/exec有效。如果您使用的是mod_proxy的DSO版本,请确保代理子模块包含在使用LoadModule的配置中。 任何想法? – Bryce