目前IPTV的IPv4的源很容易挂掉,因为使用的人太多了,有网友咨询关于通过大流量双栈服务器中转IPv6的网站流量,因之前实践过将联通的大内网单播源通过Nginx中转为IPv4实现了其他运营商通过家庭公网宽带上行的访问,所以就有了下面的技术分享。
实现的前提是中转设备需支持IPv4+IPv6双栈访问。
原理很简单,来自互联网的客户端请求您的Nginx服务器,服务器收到IPv4请求后通过Nginx的代理来获取来自IPv6站点的资源然后发送给客户端。因服务器可访问IPv6资源,故而直接可以获取到来自IPv6站点的内容。
题外话:如果您使用的Nginx服务运行在Docker容器,则需要开启Docker容器的IPv6网络,详细内容请访问:Enable IPv6 support | Docker Docs
下面我们来实现它:
1、为服务器安装Nginx服务:
sudo apt install nginx
2、编辑您的nginx.conf文件:
sudo nano /etc/nginx/nginx.conf
3、找到“http {”插入如下内容并保存:
include /etc/nginx/proxy.conf; #复制这一行插入“http {”的下方
4、在/etc/nginx/目录下创建“proxy.conf”文件写入如下内容并保存:
server {
listen 80;
server_name 192.168.31.88; #您的域名或服务器IP
location / {
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;
proxy_pass http://[2409:8087:xxxx:xx::xx]:6610; #您要代理的ipv6地址+端口
}
}
5、接下来,重启Nginx服务。
sudo nginx -s reload
最后,我们就可以通过播放器访问
比如IPTV的IPv6源地址是:
http://[2409:8087:xxxx:xx::xx]:6610/cms001/ch00000090190000035188/index.m3u8
就可以通过
http://192.168.31.88/cms001/ch00000090190000035188/index.m3u8
来观看节目了。
需要注意的是:
您要代理的IPv6地址必须是最终跳转后的地址。如跳转后的地址带有鉴权,通过IPv4地址访问的时也需要加上鉴权内容。否则不能成功。
原文地址:
https://www.fanmingming.com/article/nginx_proxy_for_IPv6.html
https://blog.csdn.net/DL53SX/article/details/95208059