使用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> 
+0

这些设置大多是为我工作,但不幸的是,我无法在Portainer使用控制台功能。当试图使用控制台时,我的apache日志吐出以下错误: AH01144:没有协议处理程序对URL/portainer/api/websocket/exec有效。如果您使用的是mod_proxy的DSO版本,请确保代理子模块包含在使用LoadModule的配置中。 任何想法? – Bryce