You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Portainer搭配Caddy反向代理出现HTTP请求发至HTTPS服务器错误的解决

Caddy反向代理Portainer报错「Client sent an HTTP request to an HTTPS server」的解决办法

问题场景

通过Docker部署Portainer,使用官方启动命令:

docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

配置Caddy反向代理时,指向了Portainer的9443端口:

www.portainer.mydomain.ovh {
        root * /usr/share/caddy/test

        file_server

        reverse_proxy localhost:9443

        log {
        output file /etc/caddy/portainer.log
        }
}

此时通过域名https://www.portainer.mydomain.ovh访问时,出现错误提示:Client sent an HTTP request to an HTTPS server;直接用https://[服务器IP]:9443访问虽能进入,但会提示站点不安全、证书无效。

错误原因

Portainer的9443端口是其自带HTTPS服务的端口,使用自签名证书;而Caddy默认以HTTP协议向反向代理目标发送请求,相当于用HTTP请求访问HTTPS服务,因此触发上述错误。直接访问9443时,浏览器识别到自签名证书,所以提示不安全。

解决方案

Portainer提供了9000端口作为HTTP服务端口,我们需要映射该端口,并让Caddy反向代理到这个HTTP端口,由Caddy负责对外提供Let's Encrypt签发的合法HTTPS证书。

修改后的Docker启动命令

docker run -d -p 8000:8000 -p 9000:9000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

修改后的Caddy配置

www.portainer.mydomain.ovh {
        reverse_proxy localhost:9000

        log {
        output file /etc/caddy/portainer.log
        }
}

修改完成后重启Portainer容器和Caddy服务,即可通过域名正常HTTPS访问Portainer,且不会出现证书不安全的提示。

内容的提问来源于stack exchange,提问作者krcarbo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 12:03:33