I had a hard time finding the information I needed to get Cockpit to work right behind an Apache reverse proxy setup. So, I decided to collect everything I found here for the future.
At first, I tried to setup cockpit under the /cockpit path but it kept failing. Apparently, that path is reserved by Cockpit, so I switched to using /ckpt/ instead.
1. Create config file: `/etc/cockpit/cockpit.conf`
2. Add contents:
[WebService] Origins = https://mydomain.com http://127.0.0.1:9090 ProtocolHeader = X-Forwarded-Proto AllowUnencrypted = true UrlRoot = /ckpt/
3. Restart Cockpit
4. Add Apache directives to chosen VirtualHost:
ProxyPreserveHost On ProxyRequests Off SSLProxyVerify None SSLProxyCheckPeerCN Off SSLProxyCheckPeerName Off SSLProxyCheckPeerExpire Off RewriteEngine On RewriteCond %{HTTP:Upgrade} =websocket [NC] RewriteRule /ckpt/(.*) ws://127.0.0.1:9090/ckpt/$1 [P,L] RewriteCond %{HTTP:Upgrade} !=websocket [NC] RewriteRule /ckpt/(.*) http://127.0.0.1:9090/ckpt/$1 [P,L] ProxyPass /ckpt/ http://127.0.0.1:9090/ckpt/ ProxyPassReverse /ckpt/ http://127.0.0.1:9090/ckpt/
5. Restart Apache