Nginx ipv6 HTTPS反向代理ipv4

Nginx ipv6 HTTPS反向代理ipv4。

问题背景

APP接口的生产环境部署在一台只支持ipv4的服务器上A,域名为api.yourdomain.com,同时支持HTTP和HTTPS。现需要上架App Store,由于苹果审核时是在纯ipv6环境下,且要求使用HTTPS协议。另购了一台同时支持ipv4和ipv6的服务器B。

解决思路

另配一域名 app.yourdomain.com,域名解析添加AAAA记录指向B服务器,A记录指向A服务器。B服务器上配置Nginx反向代理api.yourdomain.com。B服务器部署的HTTPS证书是app.yourdomain.com的。测试完成后,接口改用app.yourdomain.com域名,这样既可以兼容新老版本的APP,又满足苹果审核的要求。

nginx文件配置如下:

server
{
    #listen 80;  #取消注释可支持ipv4 80端口
    #listen 443; #取消注释可支持ipv4 443端口
    listen [::]:80;
    listen [::]:443 ssl;
    server_name app.yourdomain.com;
    access_log  /www/wwwlogs/app.yourdomain.com.log;
    error_log  /www/wwwlogs/app.yourdomain.com.error.log;

    ssl_certificate "/www/server/nginx/app.yourdomain.com.pem";
    ssl_certificate_key "/www/server/nginx/app.yourdomain.com.key";
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout  10m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_prefer_server_ciphers on;

    location / {
         proxy_set_header Host api.yourdomain.com:80;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header REMOTE-HOST $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_pass http://api.yourdomain.com:80; 
    }
}

测试时最好另找一台支持ipv6的电脑,最好是纯ipv6。

Leave a Comment

豫ICP备19001387号-1