使用Apache 2.4 mod_proxy和基本身份验证在Docker容器中运行Portainer

时间:2017-04-17 17:07:23

标签: apache user-interface docker reverse-proxy basic-authentication

问:如何使用基本身份验证将Apache 2.4配置为Portainer的反向代理?

Portainer是用于管理Docker容器的UI。 Portainer文档有一个样本nginx configuration,但遗憾的是没有apache。

2 个答案:

答案 0 :(得分:5)

答:您需要使用标志--no-auth启动Portainer并使用mod_proxy_wstunnel。

使用--no-auth启动Portainer。 我使用以下Docker Compose文件:

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>

答案 1 :(得分:0)

我在带有Docker Flow Proxy的Docker Swarm中安装了Portainer,全部位于Apache后面。

遵循this的想法,我能够成功配置apache。

<Location /portainer/api/websocket/>
  RewriteEngine On
  RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
  RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
  RewriteRule /portainer/api/websocket/(.*) ws://192.168.1.190:480/portainer/api/websocket/$1 [P]
</Location>