如何在Cloudflare中实现IP:端口到域名:其他端口路由?附Nginx配置疑问
解决Nginx域名与端口路由的问题
DNS记录(A/CNAME)本身不支持指定端口,所以没法直接通过test.xxx.com指向服务器的81端口。要实现访问test.xxx.com对应到你81端口的Nginx页面,以下是两种实用方案:
方案1:反向代理(适配独立Nginx实例)
如果你的80和81端口是两个独立的Nginx实例,可在监听80端口的Nginx中新增一个server块,将test子域名的请求转发到本地81端口:
server { listen 80; server_name test.xxx.com; # 替换为你的test子域名 location / { proxy_pass http://127.0.0.1:81; # 保留请求头信息,避免后端服务异常 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
修改完成后重启80端口的Nginx:
nginx -s reload
此时用户访问test.xxx.com时,请求会被自动转发到81端口的页面,无需在DNS中添加端口。
方案2:单Nginx实例配置虚拟主机(更简洁)
如果两个页面可以整合到同一个Nginx实例,直接通过域名区分站点即可,无需额外代理:
# 主域名(@记录)对应的80端口站点 server { listen 80; server_name xxx.com; # 替换为你的主域名 root /path/to/main-site-files; # 主页面文件路径 index index.html; } # test子域名对应的站点(复用80端口,指向不同文件目录) server { listen 80; server_name test.xxx.com; root /path/to/test-site-files; # test页面文件路径 index index.html; }
注意事项
- 确保DNS已配置
test子域名的A记录,指向同一IP(1.2.3.4),无需添加端口; - 服务器防火墙需开放80端口,81端口可仅对内开放,无需暴露到外网。
内容的提问来源于stack exchange,提问作者berriz44
相关产品推荐
相关产品推荐

