问题描述
服务器迁移后备案被取消,需通过技术手段恢复访问,同时避免因备案缺失导致服务中断。用户提出用香港服务器代理流量至大陆服务器,但需满足以下条件:
- 用户访问入口为香港Nginx,代理到大陆服务器。
- 必须使用HTTPS,若用HTTP会导致域名被检测到。
- Nginx不能传递域名信息到大陆服务器(如
Host
头、SNI信息),否则可能触发监管检测。
问题原因
- 备案失效:服务器迁移后,原备案信息与服务器地理位置(如更换到未备案的IP/区域)不符,导致备案被取消。 并且对dns以及域名访问端口进行阻断。
- HTTP协议风险:若代理使用HTTP,域名可能被明文传输或检测到,违反监管要求。
- 域名信息泄露:Nginx默认会在代理请求中携带
Host
头或SNI(Server Name Indication),导致大陆服务器收到域名信息,可能被识别为“未备案直接访问”。
解决方案
通过香港Nginx反向代理大陆服务器,并严格限制域名信息传递,同时强制全链路HTTPS加密。具体流程如下:
1. 架构设计
用户访问 → 香港Nginx(HTTPS) → 代理至大陆服务器(HTTPS) → 返回数据
• 关键点:
• 用户与香港Nginx之间使用HTTPS加密。
• 香港Nginx与大陆服务器之间强制使用HTTPS(避免HTTP明文暴露域名)。
• 禁止传递域名信息(如Host
头、SNI)。
2. 香港Nginx配置步骤
a. 配置SSL证书
• 为香港Nginx的域名(如hk-proxy.com
)部署有效的SSL证书,确保用户到香港服务器的链路为HTTPS。
b. 反向代理规则
server {
listen 443 ssl;
server_name hk-proxy.com;
# SSL配置
ssl_certificate /path/to/hk-proxy-cert.pem;
ssl_certificate_key /path/to/hk-proxy-key.pem;
location / {
# 移除Host头,防止传递域名信息
proxy_set_header Host "";
# 禁止传递其他可能包含域名的Header
proxy_set_header Referer "";
proxy_set_header Origin "";
# 使用IP地址访问大陆服务器(避免域名解析)
proxy_pass https://<大陆服务器IP>:443;
# 强制HTTPS(即使大陆服务器支持HTTP)
proxy_ssl_verify off; # 若大陆服务器使用自签名证书,需关闭验证
}
}
c. 禁用SNI扩展
在Nginx代理到大陆服务器时,默认会发送SNI(包含域名),需禁用:
proxy_ssl_server_name off; # 关闭SNI传递
3. 大陆服务器配置
a. 仅允许香港Nginx IP访问
• 在大陆服务器的防火墙(如iptables或安全组)中,仅放行香港Nginx服务器的IP,禁止其他来源访问。
b. 配置SSL证书
• 大陆服务器需部署SSL证书,但证书域名无需与业务域名一致(建议使用自签名证书,因域名信息已被剥离)。
c. 禁用基于域名的路由
• 确保后端服务(如Web应用)不依赖Host
头处理请求(例如Nginx配置中关闭虚拟主机逻辑,直接监听IP)。
4. 验证与风险控制
-
测试域名信息泄露
• 使用curl -v
或抓包工具(如Wireshark)检查大陆服务器收到的请求,确认Host
头、SNI是否被清除。
• 示例命令:curl -H "Host: original-domain.com" https://hk-proxy.com
-
全链路HTTPS监控
• 确保香港Nginx与大陆服务器之间无HTTP回退,避免协议降级导致域名暴露。 -
合规性风险
• 此方案可能违反中国大陆的备案监管政策,需评估法律风险。
• 长期建议:重新提交备案,将服务器迁回中国大陆已备案的IP/服务商。
最终效果
用户通过香港Nginx访问服务,所有请求均经HTTPS加密,且大陆服务器无法获取原始域名信息,降低因备案失效导致的服务中断风险。但仍需尽快完成正规备案流程以彻底解决问题。
评论区