[运维] 远程回家方式小结
- 端口映射
- Nginx反向代理
- OpenVPN
- SSH隧道
ssh -p 2233 -L 3389:192.168.0.100:3389 your_username@public_server_ip -N
只要执行ssh命令的终端开启,连接本机的3389端口就会穿透到192.168.0.100:3389
施工中:
upstream home_server {
server your-ddns-domain.com:port max_fails=3 fail_timeout=10s;
server localhost:backup-port backup;
}
server {
listen 80;
location / {
proxy_pass http://home_server;
}
}
• max_fails=3和fail_timeout=10s设置当家用服务器连续3次请求失败后,将流量切换到备选的本地服务(例如显示“服务暂时不可用”或提供缓存内容)。
#!/bin/bash
if ping -c 1 -W 1 your-ddns-domain.com >/dev/null; then
echo "Home server is reachable"
else
echo "Switching to local backup"
# 启动本地服务或显示离线页面
# 可以重启Nginx或者更新Nginx配置以激活备用服务
systemctl reload nginx
fi
在这种场景下,通过企业服务器作为中间代理,可以实现高可用性方案。方案的核心是在企业服务器上部署反向代理,同时对家用路由器的服务可达性进行监控,当家用路由器的公网IP失效时自动切换到企业服务器,使访问不中断。以下是方案的设计和实现细节:
架构设计
1. 家用服务器和路由器
• 家用服务器设置在家用路由器后,主要负责实际服务的提供。
• 路由器通过DDNS(动态域名服务)提供公网访问。
• 使用健康检查脚本(例如通过Ping或HTTP请求)在企业服务器上检查家用服务器的可达性。
2. 企业服务器
• 部署反向代理(如Nginx、HAProxy)和健康检查脚本,用于检测家用服务器的健康状态。
• 如果家用服务器的DDNS无法访问,则切换流量至企业服务器本地服务或提供缓存数据,尽量减少服务中断时间。
方案实现
1. 反向代理配置
• 在企业服务器上部署反向代理(Nginx、HAProxy等),配置为通过家用服务器的DDNS域名进行转发,并设置健康检查。
• 反向代理示例(假设使用Nginx):
upstream home_server {
server your-ddns-domain.com:port max_fails=3 fail_timeout=10s;
server localhost:backup-port backup;
}
server {
listen 80;
location / {
proxy_pass http://home_server;
}
}
• max_fails=3和fail_timeout=10s设置当家用服务器连续3次请求失败后,将流量切换到备选的本地服务(例如显示“服务暂时不可用”或提供缓存内容)。
2. 健康检查脚本
• 企业服务器上编写健康检查脚本定时检查家用服务器的可达性。
• 若DDNS域名不可用,则向代理服务(Nginx等)发送信号切换到本地服务。
• 可使用Shell脚本来定期执行检查:
!/bin/bash
if ping -c 1 -W 1 your-ddns-domain.com >/dev/null; then
echo "Home server is reachable"
else
echo "Switching to local backup"
# 启动本地服务或显示离线页面
# 可以重启Nginx或者更新Nginx配置以激活备用服务
systemctl reload nginx
fi
3. DNS解析方案
• 使用智能DNS解析,先尝试解析家用路由器的DDNS域名,如果失败则切换到企业服务器的IP。
• 或者在企业服务器上设置CNAME解析,以提供同一个域名对外,自动切换路由。
选择理由
• 简洁性:反向代理方案配置简单,且企业服务器的固定IP避免了因DDNS解析不稳定导致的故障。
• 容错能力:通过健康检查和反向代理的组合,企业服务器可以在家用服务器不可达时快速提供服务。
• 可扩展性:该方案可以在家庭服务器恢复后自动切换回原有服务,不需要手动干预,便于维护。

浙公网安备 33010602011771号