如何在Nginx子目录下反向代理Uptime Kuma?
解决Uptime Kuma反向代理子路径资源404问题
1. 配置Uptime Kuma基础路径
在你的docker-compose.yml中,为Uptime Kuma服务添加BASE_URL环境变量,指定子路径为/kuma:
services: kuma: image: louislam/uptime-kuma:1 environment: - BASE_URL=/kuma # 保留原有端口、卷挂载等配置
该环境变量会让Uptime Kuma前端生成的所有资源链接自动带上/kuma前缀,比如原本的/assets/index-ba0179be.js会变为/kuma/assets/index-ba0179be.js。
2. 调整Nginx代理配置
替换原有Nginx配置为以下内容:
upstream kuma { server kuma:3001; } # 匹配带斜杠的/kuma路径 location ^~ /kuma/ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; # WebSocket支持配置 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; # 移除/kuma前缀后转发到Kuma服务 proxy_pass http://kuma/; } # 处理不带斜杠的/kuma请求,重定向到带斜杠路径 location = /kuma { return 302 /kuma/; }
配置说明:
^~ /kuma/使用前缀匹配,优先级高于正则匹配,避免和其他规则冲突proxy_pass http://kuma/末尾的斜杠会自动移除请求路径中的/kuma前缀,正确转发到Kuma服务根路径- 新增
X-Forwarded-Proto头,让Kuma识别当前请求协议 - 重定向不带斜杠的请求,避免路径匹配异常
3. 重启服务
修改配置后,重启相关容器生效:
docker-compose restart kuma nginx
此时访问http://localhost/kuma会自动重定向到http://localhost/kuma/,所有资源都会以/kuma/assets/...路径请求,不再出现404错误。
内容的提问来源于stack exchange,提问作者Vala Khosravi
相关产品推荐
相关产品推荐

