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

Docker环境下Nginx启用HTTPS时出现500错误排查求助

Docker部署HTTPS访问500错误排查

问题背景

正在学习Docker工作原理,尝试容器化部署应用,目前Nginx、Redis、数据库服务均正常运行。已为服务配置SSL相关环境变量:

environment:
  - VIRTUAL_HOST=mydomain.com
  - LETSENCRYPT_HOST=mydomain.com
  - LETSENCRYPT_EMAIL=xxx

HTTP访问HTML页面正常,但HTTPS访问时出现500错误。服务器/var目录下日志无报错,仅在容器日志中看到以下记录:

nginx.1    | test.xxx.com xxx.x.xxx.xxx - - [10/Dec/2022:06:05:20 +0000] "GET /favicon.ico HTTP/2.0" 500 177 "https://test.xxx.com/dummy-html.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Firefox/102.0"

docker-compose.yaml配置

version: '2'

x-logging:
  &default-logging
  logging:
    driver: json-file
    options:
      max-size: 100m

services:
  nginx:
    image: jdj/latest
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - ./srv/nginx/vhost.d:/etc/nginx/vhost.d
      - ./srv/nginx/html:/usr/share/nginx/html
      - ./srv/ssl_certs:/etc/nginx/certs:ro
    ports:
      - "80:80"
      - "443:443"
    <<: *default-logging
    restart: always

  letsencrypt:
    image: jdj/jrcs-letsencrypt-nginx-proxy-companion:2.0
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./srv/ssl_certs:/etc/nginx/certs:rw
    volumes_from:
      - nginx
    <<: *default-logging
    restart: always

  server:
    image: jdj/jdj:1.13.0
    environment:
      - VIRTUAL_HOST=mydomain.com
      - LETSENCRYPT_HOST=mydomain.com
      - LETSENCRYPT_EMAIL=xxx
    volumes:
      - ./jdj.conf:/jdj.conf:ro
    privileged: true
    <<: *default-logging
    restart: always

  workers:
    image: jdj/jdj:1.13.0
    command: ["./scripts/workers"]
    volumes:
      - ./jdj.conf:/jdj.conf:ro
    privileged: true
    <<: *default-logging
    restart: always

  db:
    image: postgres:13.0
    env_file: jdj.conf
    volumes:
      - postgres-data:/var/lib/postgresql/data/
    <<: *default-logging
    restart: always

  redis:
    image: redis:6.0
    command: [
      "bash", "-c",
      'docker-entrypoint.sh --appendonly yes --requirepass "$$REDIS_PASSWORD"'
    ]
    env_file: jdj.conf
    volumes:
      - redis-data:/data
    <<: *default-logging
    restart: always

volumes:
  postgres-data:
  redis-data:

排查建议与详细日志查看方法

一、获取更详细的Nginx错误日志

  1. 进入Nginx容器内部:
    docker exec -it <nginx-container-name-or-id> /bin/bash
    
  2. 查看Nginx默认错误日志:
    cat /var/log/nginx/error.log
    
    或实时监控日志变化:
    tail -f /var/log/nginx/error.log
    
  3. 如果找不到上述日志,检查Nginx主配置文件(/etc/nginx/nginx.conf)或虚拟主机配置文件(/etc/nginx/vhost.d/mydomain.com)中的error_log指令,确认日志存储路径。

二、检查SSL证书状态

  1. 验证证书生成情况:
    ls -la ./srv/ssl_certs/
    
    确认存在mydomain.com.crt、mydomain.com.key等证书文件。
  2. 检查证书文件权限:
    ls -l ./srv/ssl_certs/mydomain.com.*
    
    权限需至少为644,确保Nginx容器能读取证书。

三、验证Nginx配置有效性

  1. 测试Nginx配置文件是否合法:
    docker exec <nginx-container-name-or-id> nginx -t
    
    若配置有误,会返回具体错误提示。
  2. 查看虚拟主机的HTTPS配置,确认证书路径、SSL协议等参数是否正确。

四、检查后端服务日志

查看server容器的日志,确认HTTPS请求是否正常转发到后端服务:

docker logs <server-container-name-or-id>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 14:21:01