You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

DigitalOcean与Google Domains配置问题:访问域名跳转至IP地址端口

解决浏览器地址栏从域名跳转到IP:端口的问题

看起来你的域名解析是正常的(能成功跳转到服务器并显示内容),但地址栏被替换成IP+端口的形式,大概率是服务器上的Web服务反向代理配置(比如Nginx/Apache)或者你的应用本身做了强制跳转,导致浏览器被重定向到了IP地址。下面是一步步的排查和修复方案:

1. 检查反向代理(以Nginx为例)的核心配置

这是最常见的触发原因,DigitalOcean上多数用户会用Nginx做反向代理,你需要确保配置里没有把请求重定向到IP,而是保留域名信息:

正确的Nginx配置示例

打开你的站点配置文件(通常路径是/etc/nginx/sites-available/myurl.com),确认包含这些关键设置:

server {
    listen 80;
    server_name myurl.com www.myurl.com;

    # 将请求转发到你的应用端口(替换成你实际使用的端口号)
    location / {
        proxy_pass http://localhost:你的应用端口;
        proxy_set_header Host $host;  # 这行是核心!告诉应用请求的域名是myurl.com
        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;
    }

    # 如果启用了HTTPS,补充443端口的SSL配置(记得替换证书路径)
    listen 443 ssl;
    ssl_certificate /path/to/your/ssl/cert.pem;
    ssl_certificate_key /path/to/your/ssl/key.pem;
}

# 可选:将www前缀的域名重定向到主域名(根据你的需求调整)
server {
    listen 80;
    server_name www.myurl.com;
    return 301 $scheme://myurl.com$request_uri;
}

重点强调:proxy_set_header Host $host; 这行必须存在,否则你的应用会误以为请求来自localhost:端口,从而生成指向IP地址的跳转链接。

修改完成后,先测试配置是否合法:

nginx -t

如果提示test is successful,重启Nginx生效:

sudo systemctl restart nginx

2. 检查应用程序的内部设置

有些应用(比如Node.js Express、Python Django/Flask)会根据请求的Host头生成跳转链接,如果应用里硬编码了IP地址或端口,也会导致地址栏变化:

  • 避免使用res.redirect('http://你的IP:端口/index')这类硬编码跳转,改用相对路径res.redirect('/index')
  • 在Django中,确认ALLOWED_HOSTS包含myurl.comCSRF_TRUSTED_ORIGINS也添加了域名
  • 检查应用的"基础URL"配置项,确保设置为myurl.com而非服务器IP

3. 确认DNS与端口转发无异常

虽然域名能正常解析,但还是快速核对:

  • DigitalOcean和Google Domains的DNS记录中,A/AAAA记录是直接将myurl.com指向服务器IP,没有设置URL转发类的记录
  • 如果使用非80/443端口,确保反向代理已经将80/443端口的请求转发到应用端口,这样用户访问myurl.com时无需手动加端口,也不会暴露端口信息

4. 清除缓存后测试

浏览器可能会缓存旧的重定向规则,测试前建议:

  • 用隐私模式(Incognito)访问myurl.com
  • 或者清除浏览器的缓存与Cookie

如果以上步骤都尝试后问题仍存在,可以把你的反向代理配置内容贴出来,我再帮你排查细节!

内容的提问来源于stack exchange,提问作者Kevin Cho

火山引擎 最新活动