1
also24 2020-08-16 00:50:28 +08:00
|
3
also24 2020-08-16 00:54:03 +08:00 1
少回答了一个问题,如果直接反代,那流量确实会受限于 a_com 的带宽。
另外,既然是视频业务,不清楚你们 a_com b_com 上具体放的是什么? 假如是 HLS 流的话,那么 a_com 先返回的是 m3u8 文件? 假如是这种情况,可以考虑篡改相应的文件,将文件內 ts 的地址都修改到 b_com,这样也是可以的。 |
4
daimaosix OP |
5
daimaosix OP @also24 刚才确实是想到了,m3u8 的文件可以走 a 。com,ts 走 b 。com,因为文件量实在太大了,不知道能不能去实现修改,多谢老哥的建议。
|
6
vanillaxxx 2020-08-16 01:05:09 +08:00 via iPhone
|
8
also24 2020-08-16 01:08:02 +08:00
@daimaosix #4
我们先来说直接 https 的方案,其实并不需要 b_com 上有 a_com 的证书。 你可以在 b_com 上配置 SNI 反代,具体可以参考这个模块的使用: http://nginx.org/en/docs/stream/ngx_stream_ssl_preread_module.html 这样实现之后的效果的: 只要 b_com 发现流量是要访问 a_com 的,就直接转发到 a_com (没有解密过程)。 如果 b_com 和 a_com 在同一个内网,这样操作还是有一点点意义的。 |
9
vanillaxxx 2020-08-16 01:08:35 +08:00 via iPhone 1
一楼说的重定向我们之前用 307 做过,完全没问题,这个应该是最简便快捷的了吧
|
11
vanillaxxx 2020-08-16 01:21:57 +08:00 1
@daimaosix #10 恭喜恭喜恭喜你呀哈哈哈
|
12
also24 2020-08-16 01:23:43 +08:00
@daimaosix #5
然后我们说 m3u8 文件修改的方案。 首先,最简单的方法肯定是直接改文件本身,可以写个小程序去批量修改。 其次,就是直接使用 nginx 的 ngx_http_substitutions_filter_module 模块动态修改。 https://www.nginx.com/resources/wiki/modules/substitutions/ https://github.com/yaoweibin/ngx_http_substitutions_filter_module 这个模块的功能也很简单,就是查找替换,比起官方的 ngx_http_sub_module 多支持了正则。 需要注意的是,这是个第三方模块,且近期似乎没有太多维护,要做好测试。 不知道你们的请求分布情况是怎么样的,按道理来说,对于大量请求的文件,还是尽量直接修改掉会比较好。 |
15
daimaosix OP @also24 刚才试了一下,H5 的播放器不支持,不过我们也没有网页,基本都是通过 APP 用的,测试了一下 APP 没发现什么异常。
|
16
also24 2020-08-16 01:36:52 +08:00 1
@daimaosix #14
比较新一点的客户端应该都还不错,大部分情况下应该不用操心。 没找到请求库相关的,只找到一份浏览器的: http://test.greenbytes.de/tech/tc/httpredirects/ 如果很担心的话,可以在重定向的时候加一点标记,然后两边统计一下请求数量。 |
17
also24 2020-08-16 01:59:05 +08:00 1
这里举一个不支持 307 的例子:
https://github.com/square/okhttp/blob/master/CHANGELOG.md#version-460 相应的代码在这里: https://github.com/square/okhttp/pull/5990 这个的问题,在 2014 年就被引入,2016 年就被提出,却直到今年才被修正: https://github.com/square/okhttp/pull/944#issuecomment-248449263 这个库,就是大名鼎鼎的 okhttp,做 Android 开发的应该基本都用过它 ~ |
18
also24 2020-08-16 02:00:54 +08:00 1
修正一下措辞,okhttp 不是不支持 307,是对 307 的支持不标准。
|