Dozzle配置Nginx反向代理后/api路径404错误求助
解决方案
1. 正确配置Dozzle的BASE_PATH环境变量
修改你的dozzle-compose.yml,添加DOZZLE_BASE_PATH环境变量,指定根路径为/dozzle:
version: "3" services: dozzle: container_name: dozzle image: amir20/dozzle:latest volumes: - /var/run/docker.sock:/var/run/docker.sock:ro ports: - 8081:8080 environment: # DOZZLE_AUTH_PROVIDER: simple DOZZLE_ENABLE_ACTIONS: true DOZZLE_BASE_PATH: /dozzle # 添加这一行
2. 简化Nginx配置(移除不必要的sub_filter)
Dozzle会自动基于BASE_PATH生成所有路径前缀,因此Nginx无需再做内容替换,调整后的配置如下:
location /dozzle/ { rewrite ^/dozzle(/.*)$ $1 break; proxy_pass http://0.0.0.0:8081; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; 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; chunked_transfer_encoding off; proxy_buffering off; proxy_cache off; }
3. 重启服务使配置生效
- 重启Dozzle容器:
docker-compose down && docker-compose up -d
- 重启Nginx服务:
sudo systemctl restart nginx
问题原因分析
之前的问题核心在于:
- 仅用Nginx的
sub_filter无法覆盖所有动态生成的API请求(比如JS中通过变量拼接的API路径),导致部分请求仍直接访问/api/而非/dozzle/api/。 - 若之前尝试设置
BASE_PATH但未生效,大概率是配置未正确添加到环境变量,或是容器未重启加载新配置。
内容的提问来源于stack exchange,提问作者Saksham Gaur
相关产品推荐
相关产品推荐

