Mailcow SOGO经Nginx Proxy Manager代理登录时出现502错误
SOGO登录502错误排查(Mailcow前置Nginx Proxy Manager场景)
1. 补全WebSocket转发配置
SOGO登录流程依赖WebSocket通信,Nginx Proxy Manager默认配置可能缺失相关转发规则,导致连接中断触发502:
- 进入NPM对应SOGO的代理配置页,切换到高级标签
- 添加以下Nginx自定义配置:
proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 3600; proxy_send_timeout 3600; - 保存后重启代理服务,重新测试登录
2. 核对代理目标地址
确认NPM转发的是Mailcow内部SOGO容器的直连端口,而非Mailcow前端Nginx的对外端口:
- 执行
docker-compose ps sogo在Mailcow服务器上查看SOGO容器的映射端口(默认是20000) - NPM的代理目标需设为
http://<Mailcow服务器IP>:20000,避免转发到Mailcow的80/443端口导致二次代理冲突
3. 确保请求头完整传递
部分身份验证相关请求头被截断会导致SOGO后端无法处理登录请求:
- 在NPM代理的自定义配置中添加:
proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; - HTTPS场景下需确保
X-Forwarded-Proto被正确设置为https,否则SOGO会生成错误的回调地址
4. 调整超时时间阈值
默认超时过短可能导致登录请求未完成就被中断:
- NPM侧:在高级配置中添加
proxy_connect_timeout 60s; - Mailcow侧:编辑
data/conf/nginx/soogo.conf,将proxy_read_timeout修改为300,执行docker-compose restart nginx-mailcow重启容器
5. 验证网络连通性
确认NPM服务器能正常访问Mailcow的SOGO端口:
- 在NPM服务器执行
curl -I http://<Mailcow服务器IP>:20000/SOGo,检查返回状态码是否为200 - 若不通,检查Mailcow服务器防火墙规则,确保
20000端口对外开放,或确认两台服务器处于同一可连通的网络段
内容的提问来源于stack exchange,提问作者Gooseware
相关产品推荐
相关产品推荐

