我已将 Portainer UI 设置为 docker 容器,如果我将浏览器连接到端口 9000(如http://foo.bar.com:9000中),它会很好地工作。我可以毫无问题地浏览 UI 并打开容器控制台(使用 websockets)。
但是,我需要做的是连接 SSL(如https://foo.bar.com中)。
我在同一台机器上设置了一个 httpd 容器,并给了它以下配置文件:
<VirtualHost *:443>
ServerName foo.bar.com
ProxyPass / http://foo.bar.com:9000/
ProxyPassReverse / http://foo.bar.com:9000/
RequestHeader set X-Forwarded-Proto "https"
<Location /api/websocket/>
RewriteEngine on
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
RewriteRule /api/websocket/(.*) ws://foo.bar.com:9000/api/websocket/$1 [P]
</Location>
## SSL directives
SSLEngine on
SSLCertificateFile "/usr/local/apache2/conf/server.crt"
SSLCertificateKeyFile "/usr/local/apache2/conf/server.key"
## Logging
ServerSignature Off
ErrorLog "logs/error_ssl.log"
CustomLog "logs/access_ssl.log" common
</VirtualHost>
httpd 和 portainer 都由单独的 docker-compose.yml 文件启动。
现在,Portainer 网页仍然可以正常显示,但容器的控制台无法正常工作。不知何故,我上面的 websocket 配置被破坏了。关于我可能做错了什么的任何想法?