怎样把云服务器的端口映射到家中路由器上?

假设我们要实现将云服务器的 80 端口映射到家中网络的 公网端口 7890,那么需要使用 反向代理 或 内网穿透 技术。以下是几种可行的方案:

方案 1:使用反向代理(推荐)

适用于 云服务器有公网 IP 的情况,通过 Nginx/HAProxy 等工具将请求转发到家庭网络。

步骤:

  1. 确保家庭网络有公网 IP(或使用 DDNS)
    • 如果你的家庭宽带是 动态公网 IP,可以使用 DDNS(动态域名解析),如:
    • 如果没有公网 IP,请使用 方案 2(内网穿透)
  2. 在云服务器上配置反向代理(以 Nginx 为例)
server {
listen 80;
server_name your-cloud-server.com; # 替换为你的云服务器域名或IP

location / {
proxy_pass http://你的家庭公网IP或DDNS域名:7890; # 家庭网络的公网IP:7890
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}

这样,访问云服务器的 80 端口会自动转发到家庭网络的 7890 端口。

方案 2:使用内网穿透工具(无公网 IP 时)

适用于 家庭网络没有公网 IP 的情况,通过隧道工具将家庭内网端口暴露到云服务器。

推荐工具:

工具特点官网
frp (Fast Reverse Proxy)开源,高性能,适合自建github.com/fatedier/frp
Ngrok简单易用,有免费版ngrok.com
ZeroTier虚拟局域网,适合长期稳定使用zerotier.com
Cloudflare Tunnel免费,适合 Web 服务developers.cloudflare.com

以 frp 为例:

1、在云服务器(有公网 IP)上部署 frp 服务端

# frps.ini
[common]
bind_port = 7000 # frp 服务端端口

启动frp

./frps -c frps.ini

2、在家庭内网机器上部署 frp 客户端

# frpc.ini
[common]
server_addr = 你的云服务器IP
server_port = 7000 # 与服务端一致

[home_http]
type = tcp
local_ip = 127.0.0.1
local_port = 7890 # 家庭内网的服务端口
remote_port = 80 # 映射到云服务器的80端口

启动frp

./frpc -c frpc.ini

这样,访问云服务器的 80 端口就会自动转发到家庭内网的 7890 端口。

方案 3:使用 SSH 端口转发(临时方案)

如果只是临时测试,可以用 SSH 反向隧道

ssh -R 80:localhost:7890 user@你的云服务器IP

这样,云服务器的 80 端口会转发到本地的 7890 端口(但 SSH 断开后失效)。

总结一下

方案适用场景推荐工具
反向代理家庭网络有公网 IPNginx/HAProxy
内网穿透家庭网络无公网 IPfrp/Ngrok/Cloudflare Tunnel
SSH 隧道临时测试SSH -R

如果你的家庭网络 没有公网 IP,建议使用 frp 或 Cloudflare Tunnel
如果有公网 IP,直接用 Nginx 反向代理 更稳定。

发布日期:2025-04-09 浏览次数:70

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注