343 字
2 分钟
记一次Nginx反代飞牛遇到416的问题
问题
Nginx 反代飞牛用标准的反代方式之前用的都一切正常,但是最近使用了飞牛影视,发现一直播放失败,控制台查看日志发现有416的错误,使用飞牛的地址直接请求是正常的,原以为是使用了CDN的原因,准备开喷了都。遂想着顺手排查一下是不是Nginx配置的问题,使用一个没有CDN的地址,发现还是416,这就很奇怪了,这误会了,是Nginx的锅,不是CND的锅。 直接请求飞牛返回的是206,而Nginx返回的是416。
问了一下AI说是 Nginx 没有正确地处理或传递客户端的 Range 头信息。 需要添加如下配置
proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;
proxy_buffering off;
配置完飞牛的完整配置如下
#PROXY-START/
location ^~ /v/api/v1/media/range/
{
proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;
proxy_buffering off;
proxy_pass http://192.168.101.2:5666;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_http_version 1.1;
# proxy_hide_header Upgrade;
add_header X-Cache $upstream_cache_status;
#Set Nginx Cache
set $static_fileQesizG7c 0;
if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
{
set $static_fileQesizG7c 1;
expires 1m;
}
if ( $static_fileQesizG7c = 0 )
{
add_header Cache-Control no-cache;
}
}
location ^~ /
{
proxy_pass http://192.168.101.2:5666;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_http_version 1.1;
# proxy_hide_header Upgrade;
add_header X-Cache $upstream_cache_status;
#Set Nginx Cache
set $static_fileQesizG7c 0;
if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
{
set $static_fileQesizG7c 1;
expires 1m;
}
if ( $static_fileQesizG7c = 0 )
{
add_header Cache-Control no-cache;
}
}
#PROXY-END/
记一次Nginx反代飞牛遇到416的问题
https://blog.zzboy.tk/posts/记一次nginx反代飞牛遇到416的问题/