Docker部署Minio登录时遇‘http: server gave HTTP response to HTTPS client’错误
问题场景
在Docker中部署Minio时,登录环节出现http: server gave HTTP response to HTTPS client错误。服务运行状态正常,能看到登录页面,Docker日志输出了正确的HTTPS地址,Minio版本为RELEASE.2023-01-12T02-06-16Z (go1.19.4 linux/amd64)。
当前docker-compose.yml配置
version: '3' services: minio: image: minio/minio:latest container_name: minio ports: - "9000:9000" - "9001:9001" environment: MINIO_ROOT_USER: admin MINIO_ROOT_PASSWORD: admin123 MINIO_SERVER_URL: "https://xxxx.ga:9000" MINIO_BROWSER_REDIRECT_URL: "https://xxxx.ga:9001" MINIO_COMPRESS: "off" MINIO_COMPRESS_EXTENSIONS: "" MINIO_COMPRESS_MIME_TYPES: "" volumes: - ./data:/data - ./config:/root/.minio #证书存放目录 command: server --address ':9000' --console-address ':9001' /data privileged: true restart: always
Docker日志输出
Status: 1 Online, 0 Offline. API: https://xxxx.ga:9000 Console: https://xxxx.ga:9001 Documentation: https://min.io/docs/minio/linux/index.html Warning: The standard parity is set to 0. This can lead to data loss.
排查与解决步骤
1. 确认证书路径与文件名合规
Minio默认从容器内/root/.minio/certs目录加载HTTPS证书,要求证书文件必须是:
- 公钥文件:
public.crt - 私钥文件:
private.key
你当前挂载宿主机./config到容器/root/.minio,需在宿主机./config下创建certs子目录,将证书重命名为上述标准名称后放入该目录。
2. 验证证书是否被正确加载
重启容器后查看Docker日志,若出现类似Loaded TLS certificate from /root/.minio/certs/public.crt and /root/.minio/certs/private.key的日志,说明证书加载成功;若没有相关日志,需检查证书路径、文件名是否正确,或给证书文件设置644权限确保容器可读取。
3. 检查Minio是否实际启用HTTPS
证书加载正常仍报错的话,可进入容器执行curl https://localhost:9000测试,确认Minio是否真的提供HTTPS服务。若容器内访问也报错,说明证书可能不是PEM格式或存在其他格式问题。
4. 确认环境变量配置一致性
确保MINIO_SERVER_URL和MINIO_BROWSER_REDIRECT_URL的地址与实际访问的HTTPS地址完全一致,无拼写错误。若通过反向代理访问,需确保代理HTTPS配置正确,且Minio的MINIO_SERVER_URL指向代理后的HTTPS地址。
内容的提问来源于stack exchange,提问作者Dodge_X

