关于配置域名DNS以隐藏生产服务器/ALB IP并返回Ubuntu服务器IP的技术问询
配置域名DNS以隐藏生产服务器/ALB IP并返回Ubuntu服务器IP的技术问询
当然可以实现这个需求!我来给你拆解清楚怎么做,以及背后的逻辑:
核心思路
你现在的域名是通过Cloudflare的CNAME指向ALB,所以DNS查询返回的是ALB的地址。要让查询返回Ubuntu服务器的IP,本质上就是把域名的DNS解析直接指向Ubuntu的公网IP,同时让Ubuntu作为反向代理,把用户的请求转发到后面的Windows生产服务器(或ALB)。这样既隐藏了真实生产环境的地址,又能正常提供服务。
具体操作步骤
修改Cloudflare的DNS记录
- 登录你的Cloudflare控制台,找到对应域名的DNS管理页面
- 删除原来指向ALB的CNAME记录(如果是A记录则删除对应A记录)
- 添加一条新的A记录:
- 主机记录填你的域名(比如
@代表根域名,www代表www子域名) - 记录值填Ubuntu服务器的公网IP地址
- 代理状态选择「仅限DNS」(灰色云朵图标)—— 这样DNS解析会直接返回Ubuntu的IP,而不是Cloudflare的节点IP
- 主机记录填你的域名(比如
- 保存记录后,等待DNS生效(根据TTL设置,通常几分钟到1小时左右)
在Ubuntu上配置反向代理
现在域名解析到Ubuntu了,需要让它把用户请求转发到生产服务器/ALB,这里推荐用Nginx来实现:- 先安装Nginx:
sudo apt update && sudo apt install nginx - 打开Nginx的站点配置文件(比如
/etc/nginx/sites-available/your-domain.conf),添加反向代理规则:server { listen 80; server_name your-domain.com; # 替换成你的实际域名 location / { # 替换成你的生产服务器IP或ALB的DNS地址 proxy_pass http://your-production-server-ip-or-alb-dns; # 传递必要的请求头,确保生产服务器能正确处理请求 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; } } - 启用这个配置:
sudo ln -s /etc/nginx/sites-available/your-domain.conf /etc/nginx/sites-enabled/ - 测试配置是否正确:
sudo nginx -t - 重启Nginx生效:
sudo systemctl restart nginx
- 先安装Nginx:
额外注意事项
- HTTPS支持:如果你的域名用了HTTPS,需要在Ubuntu上配置SSL证书(可以用Certbot免费申请Let's Encrypt证书),同时调整Nginx配置监听443端口,并且把Cloudflare的SSL模式设置为「Full」或「Full (strict)」,确保链路安全。
- 防火墙设置:确保Ubuntu服务器的防火墙开放了80(HTTP)和443(HTTPS)端口,比如用
ufw的话:sudo ufw allow 80/tcp && sudo ufw allow 443/tcp && sudo ufw reload - 测试验证:DNS生效后,用
nslookup your-domain.com或者DNSChecker工具查询,应该只会显示Ubuntu的公网IP;同时访问域名,能正常打开生产服务器的服务,就说明配置成功了。
备注:内容来源于stack exchange,提问作者Praveen Sivakumar
相关产品推荐
相关产品推荐

