用nginx proxy_pass 将IPv6请求转发到阿里云云服务器ECS

看到云友“yangpengp ”在帖子里希望使用“专有网络”网络类型的云服务器ECS也能通过IPv6地址访问到内容,能通过苹果APP的审核。

注意:如是苹果APP上架申请因无法IPv6-only访问被拒,请重点检查APP代码,苹果公司的参考文档并没有要求APP服务需要有IPv6地址:https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html

场景:

a. 阿里云国内地域的云服务器ECS没有分配有效的公网IPv6地址,但苹果APP审核时,可能会要求内容能通过IPv6地址访问
b. 国外服务商tunnelbroker.net,可以提供IPv6的隧道地址,使用的协议是6in4
c. 阿里云国内地域的云服务器ECS有“经典网络”和“专有网络”的网络类型,“经典网络”环境里可以使用tunnelbroker.net提供的隧道地址,“专有网络”则不可以,因为阿里云工程师确认在“专有网络”环境下不支持41协议 (更新:专有网络也可以使用he.net提供的隧道地址来设置了)

环境:

a. 国外配有IPv6地址的VPS
b. 阿里云“专有网络”的ECS

过程:

1.将域名(如liujia.anqun.org)分别做A和AAAA记录,A记录解析到阿里云ECS的公网IP(如121.40.22.38),AAAA记录解析到国外VPS的IPv6地址(如2602:ffc5:20::1:ebde)
bbs-aliyun-dongshan3-312196-1.png

2.在国外的VPS,配置虚拟主机配置文件,内容如下:

server {
        listen       [::]:80;  # 监听IPv6的80端口
        server_name  liujia.anqun.org;      # 站点域名
        location / {
                proxy_pass         https://liujia.anqun.org/; # IPv4的站点访问地址
                proxy_redirect     off;
                proxy_set_header   Host             $host;
                proxy_set_header   X-Real-IP        $remote_addr;
                proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
}

bbs-aliyun-dongshan3-312196-2.png

3.重启nginx后,生效

4.在 http://ipv6-test.com/validate.php 测试,可以看到前两项通过。在 http://www.ipv6proxy.net/ 测试,可以看到页面内容

bbs-aliyun-dongshan3-312196-3.png

bbs-aliyun-dongshan3-312196-4.png

期望的结果是,如此设置,IPv4访问到阿里云的ECS,访问速度快,IPv6访问是经国外转发请求,可以通过苹果的APP审核。成本方面,国外的VPS有的较便宜,一年100元以下的也有不少商家可以选择。

参考:

标签: none

添加新评论