怎样把云服务器的端口映射到家中路由器上?
假设我们要实现将云服务器的 80 端口映射到家中网络的 公网端口 7890,那么需要使用 反向代理 或 内网穿透 技术。以下是几种可行的方案:
方案 1:使用反向代理(推荐)
适用于 云服务器有公网 IP 的情况,通过 Nginx/HAProxy 等工具将请求转发到家庭网络。
步骤:
- 确保家庭网络有公网 IP(或使用 DDNS)
- 在云服务器上配置反向代理(以 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 断开后失效)。
总结一下
方案 | 适用场景 | 推荐工具 |
---|---|---|
反向代理 | 家庭网络有公网 IP | Nginx/HAProxy |
内网穿透 | 家庭网络无公网 IP | frp/Ngrok/Cloudflare Tunnel |
SSH 隧道 | 临时测试 | SSH -R |
如果你的家庭网络 没有公网 IP,建议使用 frp 或 Cloudflare Tunnel。
如果有公网 IP,直接用 Nginx 反向代理 更稳定。
发表回复