当前ios app审核需要抽查是否支持ipv6很多审核被退回,而国内目前除了教育网之外还没有使用到ipv6环境,本人在工作时遇到这个问题,通过网络查询发现大多数帖子都是出自同一个内容,但感觉不是太好。以下为我本人的方法。希望对大家有用。我这里也只提供一种思路,并不会非常详细的讲解,但如果是运维相信能很容易看懂。该方法除了域名解析几乎不影响原有配置和源码
主要实现目的:
- 不需要改动源码(但原有框架已经支持ipv6情况下);
- 审核期间仍然能够正常使用不影响ipv4环境用户;
- 代理服务器不使用ssl证书。但访问仍然为https方式(后端原有服务器需要有安装ssl证书);
注意:审核期间不支持CDN
####一. 注册虚拟机一台该云主机需要支持ipv4和ipv6,ipv4主要使用来连接的如果你本地没有ipv6环境云主机不支持ipv4你无法连接过去设置。
注册可以选用AWS(国外)或者vultr。我用的是后者vultr云主机相对便宜,只要2.5美元一个月,购买的时候注意选择支持ipv6选项并选择linux,哪个发行版你自己决定我这里采用的是centos7.x。
####二. ssh进入云主机并安装必要软件 ######a. 安装dig工具
#yum -y install bind-utils
b. 安装haproxy代理
#yum -y install haproxy
######c. 关闭防火墙
#systemctl stop firewalld
#systemctl disable firewalld
####三. 配置haproxy代理,采用http模式(7层)或者tcp模式(4层),我这采用tcp模式
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
#以上为默认
#80端口可以不用,按照实际情况,我这里只用443端口你可以8个都开启
listen test1
#bind必须绑定ipv6地址
bind [2001:19f0:9002:3c2:5400:ff:fe72:ceee]:443 #ssl
mode tcp
#域名改为你服务器的域名或者ip,全部指向正式服务器地址
server app1 home.example.com:443 check
#listen test2
# bind [2001:19f0:9002:3c2:5400:ff:fe72:ceee]:80
#mode tcp
#server app1 home.example.com:80 check
####四. 启动haproxy并查询是否打开了443端口
#systemctl start haproxy #启动haproxy
#systemctl status haproxy #查看是否启动
#ll -lntp #检查是否打开了443端口
####五. 修改域名解析
1. 首先注意备份原来的域名解析,后期审核通过后需要修改回来
2. 域名解析方法
- 添加2个相同的域名(我这里称之为A域名)
其中一个为A解析,指向正式服务器(一般和上面回源地址相同)
另一个为AAAA解析(为新注册云主机ipv6地址)
- 把原来需要的域名(app审核的域名)改为CNAME解析,解析到1中添加的域名(也就是A域名)
3. 示例
名称 | 解析类型 | 主机 |
---|---|---|
A | A | IPV4 |
A | AAAA | IPV6 |
APP(审核域名) | CNAME | A |
####六. 检查域名解析是否成功,如果有条件,可以使用另外一台云主机进行 用dig解析一下app需要审核的域名是否有2个解析ip,分别为ipv4和ipv6. dig example.com dig example.com aaaa *也可以在windows下使用nslookup查看是否能解析出2个ip(如下图)
用ping6(linux下)看一下是否ping的是ipv6地址;
用ping看一下ping的是否为ipv4地址;
用curl -v url 看一下信息是否正确(如果是https那么看一下是否证书正确)
####七. 结束 ######1. 如果以上设置都正确,那么在ipv4环境下的电脑访问会自动解析ipv4地址直接访问正式服务器;如果在ipv6环境下访问那么会自动解析ipv6地址,并通过云主机反向代理访问(速度国内会慢一点);
2. 这样就可以不影响用户的情况下,又能通过app的审核,国内基本没有ipv6环境,即使教育网在出口也基本都会改成ipv4方式(否则国内绝大部分网站都打不开),所以也都会直接从服务器访问不影响速度。
3. 如果审核通过请及时还原原来的域名解析
4. 该方法除了域名解析几乎不影响原有配置和源码
####七.验证网站是否已支持IPV6 测试地址:http://ipv6-test.com/validate.php
https://my.oschina.net/rickywiki
作者:Ricky(564001002@qq.com) 转载请注明,谢谢!