Dokku子域名应用错误指向其他应用域名问题求助
Dokku多域名应用路由问题排查指引
1. 修正全局域名绑定冲突
从你的dokku domains:report输出可见,两个应用都继承了全局域名bbb.com,这会导致Nginx虚拟主机规则混乱:
- 先清除全局域名配置:
dokku domains:clear-global - 仅给需要绑定
bbb.com的应用单独添加域名:dokku domains:add newapp bbb.com - 再次确认域名配置:
确保dokku domains:reportaaa的vhosts仅为aaa.com,newapp的vhosts为newapp.bbb.com和bbb.com。
2. 检查Nginx虚拟主机配置
Dokku会自动生成Nginx配置文件,直接查看配置确认路由规则:
- 列出所有启用的Nginx站点配置:
ls /etc/nginx/sites-enabled/ - 查看
aaa应用的Nginx配置:cat /etc/nginx/sites-enabled/aaa.conf - 查看
newapp应用的Nginx配置:
重点核对每个配置中的cat /etc/nginx/sites-enabled/newapp.confserver_name字段,确保:aaa.conf的server_name仅包含aaa.comnewapp.conf的server_name包含newapp.bbb.com和bbb.com
3. 调整默认虚拟主机优先级
Dokku按应用字典序生成Nginx配置,aaa排在newapp前面,会成为Nginx的默认虚拟主机(当请求域名不匹配任何配置时,会返回默认主机的内容)。修改默认主机:
- 设置
newapp为默认虚拟主机:dokku nginx:set newapp default-site true
4. 验证Nginx配置并重启
修改配置后,必须验证配置正确性并重启Nginx:
- 测试Nginx配置语法:
nginx -t - 重启Nginx服务:
service nginx restart
5. 清除Cloudflare缓存
Cloudflare的缓存可能导致旧路由规则生效,手动清除缓存:
- 登录Cloudflare后台,进入对应域名的「缓存」页面,选择「清除全部缓存」
6. 直接验证路由规则
用curl绕过CDN,直接向VPS IP发送请求并指定Host头,确认Nginx路由正确:
- 测试
newapp.bbb.com:curl -H "Host: newapp.bbb.com" http://<vps-ip>/endpoint - 测试
bbb.com:curl -H "Host: bbb.com" http://<vps-ip> - 测试
aaa.com:
以上请求应分别返回对应应用的内容,而非统一返回curl -H "Host: aaa.com" http://<vps-ip>aaa.com的内容。
内容的提问来源于stack exchange,提问作者Terry T
相关产品推荐
相关产品推荐

