Docker部署listmonk邮件服务器Nginx无端口访问502错误求助
Listmonk部署Nginx反向代理故障排查问题
我部署邮件服务器listmonk时遇到异常,相同配置其他用户均可正常运行,但针对“502 nginx docker”或“recv failed Connection reset by peer”的常规解决方案均无效,怀疑是Nginx虚拟主机配置问题。
现象
- 通过
serverIP:5870可正常加载站点;将Nginx的proxy_pass设置为http://example.com:5870时,example.com:5870可访问,但直接访问example.com(不带端口)会出现502错误,Nginx错误日志显示:2023/11/22 17:54:00 [error] 54579#54579: *2 recv() failed (104: Connection reset by peer) while reading response header from upstream... - 若
proxy_pass设为http://127.0.0.1:5870,访问example.com:5870会出现ERR_SSL_PROTOCOL_ERROR;设为http://example.com:5870时,example.com可加载但页面样式异常,资源URL为http://localhost:9000/subscription/form
已尝试的proxy_pass配置
http://example.com:5870/搭配proxy_redirect无改善http://<SERVER_IP>:5870、http://0.0.0.0:5870均无效http://example.com/导致ERR_TOO_MANY_REDIRECTShttp://listmonk_app:5870等容器名配置触发Nginx错误
本地curl测试
执行curl 127.0.0.1:5870、curl 0.0.0.0:5870、curl 127.0.0.1:9000均返回Recv failure: Connection reset by peer
附配置文件
docker-compose.yml
version: "3.7" x-app-defaults: &app-defaults restart: unless-stopped image: listmonk/listmonk:latest ports: - "5870:9000" networks: - listmonk environment: - TZ=Etc/UTC x-db-defaults: &db-defaults image: postgres:13 ports: - "9432:5432" networks: - listmonk environment: - POSTGRES_PASSWORD=pw - POSTGRES_USER=listmonk - POSTGRES_DB=listmonk restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -U listmonk"] interval: 10s timeout: 5s retries: 6 services: db: <<: *db-defaults container_name: listmonk_db volumes: - type: volume source: listmonk-data target: /var/lib/postgresql/data app: <<: *app-defaults container_name: listmonk_app depends_on: - db volumes: - ./config.toml:/listmonk/config.toml - ./uploads:/listmonk/uploads networks: listmonk: volumes: listmonk-data:
Nginx配置
server { listen 443 ssl; server_name example.com; location / { proxy_pass http://127.0.0.1:5870; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } server { listen 80; server_name example.com; location / { return 301 https://$host$request_uri; } }
内容的提问来源于stack exchange,提问作者MaximilianKohler
相关产品推荐
相关产品推荐

