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

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_REDIRECTS
  • http://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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 00:53:24