Docker环境下Nginx无访问/错误日志问题排查
排查Nginx+uWSGI+Django+Docker环境下日志未生成的问题
Nginx配置排查
- 确认配置文件中明确指定日志路径,示例配置:
路径需与Docker挂载的宿主机目录对应,且容器内Nginx进程(通常为access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log;www-data用户)拥有该路径的写入权限。 - 验证配置语法有效性:在容器内执行
nginx -t,若无误执行nginx -s reload重载配置。 - 检查反向代理规则是否正确,确保请求能转发到uWSGI,否则Nginx不会生成日志。
uWSGI配置排查
- 检查uWSGI配置中的日志参数,示例:
确认容器内日志目录存在且uWSGI进程有写入权限。logto = /var/log/uwsgi/uwsgi.log - 用
uwsgitop或容器内进程查看命令(如ps aux)确认uWSGI正常运行并接收请求。
Docker挂载与权限排查
- 核对
docker-compose.yml或docker run命令中的挂载规则,示例:
确保宿主机侧日志目录已创建,且权限设置允许容器进程写入(可执行volumes: - ./nginx/logs:/var/log/nginx - ./uwsgi/logs:/var/log/uwsgichmod 755 ./nginx/logs调整)。 - 进入容器查看日志路径状态:执行
docker exec -it <容器名> ls /var/log/nginx,若目录不存在,需在Dockerfile中提前创建或调整挂载逻辑。
Django日志配置排查
- 检查
settings.py中的LOGGING配置,确保已开启文件日志输出,示例:
确认容器内该日志路径的写入权限。LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'file': { 'level': 'INFO', 'class': 'logging.FileHandler', 'filename': '/var/log/django/app.log', }, }, 'loggers': { 'django': { 'handlers': ['file'], 'level': 'INFO', 'propagate': True, }, }, }
额外排查步骤
- 测试请求是否到达服务器:执行
curl localhost:8000,观察容器内进程是否有响应。 - 手动在容器内创建测试日志文件:执行
docker exec -it <容器名> touch /var/log/nginx/test.log,若失败则说明权限不足,需调整目录权限或进程运行用户。
内容的提问来源于stack exchange,提问作者Danniel_Lee
相关产品推荐
相关产品推荐

