本人小白,纯粹的给自己记录一下哈,大佬勿喷!

规定一下:资源站的域名 称为目标域名;本地做反向代理的域名 称为反代域名。好分辨


在最近一次本地测试中,因为资源站设定原因,所以需要自行反代网站才能正常使用,那么就只有配置nginx反向代理目标域名,于是就简单搞了下,这里目标域名开启了https,这里就顺手为反代域名获取ssl证书,接下来就是目前过程中遇到的连续问题了。

1.跳转
此时这样的代理无法访问,会一直请求到报错524,遂修改代理配置的目标域名协议为http,这里就出现了第一个问题:

访问反代域名会自动跳转目标域名。

查看了F12之后,发现目标域名强制转发https,所以代理http行不通,还是要固定为https。


2.upstream timed out

代理配置修改目标为https之后,就是长时间无响应,然后报错524,经过查看nginx的错误日志,如下:

[error] 1465#1465: *11070 upstream timed out (110: Connection timed out) while connecting to upstream, client: 192.x.x.x, server: 反代域名, request: "GET /xxx/xxx.m3u8 HTTP/1.1", upstream: "https://[2611:47c0:21::a3sd:2a02]:443/xxx/xxx.m3u8", host: "反代域名"

查看到是强制将目标域名解析为ipv6
所以就禁止解析为ipv6,然后设置个地址变量,转发出去。nginx配置文件内添加如下:

server{
    ...
    resolver  114.114.114.114 valid=5 ipv6=off;
    ...
    location ~ [^/]\.php(/|$) {
        ...
        set $backend "目标域名";
        proxy_pass http://$backend/;
        ...
    }
}

3.SSL证书错误

搞定之后查看日志发现又遇到了SSL证书错误

1553#1553: *11114 SSL_do_handshake() failed (SSL: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:SSL alert number 40) while SSL handshaking to upstream, client: 162.xx.xx.xx, server: 反代域名, request: "GET /xxx/xxx.m3u8 HTTP/1.1", upstream: "https://xxx/xxx.m3u8", host: "反代域名"

于是nginx配置信息添加:

server{
    ...
    proxy_ssl_server_name on;
    proxy_ssl_session_reuse off;
    ...
}

开启SIN,然后关闭缩写握手

4.TS切片的网址403保存
配置保存重载之后,此刻访问反代域名及对应的m3u8资源已经不会跳转了,点击连接会直接弹出提示下载。

本来以为可以稳稳的直接浏览,但是,tmd,加载m3u8连接之后,ts切片是另外一个cdn连接,也有限制,目前播放直接控制台打印提示另外的跨域报错。。。
有空再研究下,或者如果有有缘进来的大佬留留言也可以,感激~~

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐