Nginx Location块配置异常,访问HLS路径持续返回404求助
Nginx Location块配置异常,访问HLS路径持续返回404求助
兄弟,看你贴的nginx.conf内容,我一眼就发现问题所在了——你没配置对应的server块和/hls路径的location规则!Nginx现在只加载了基础的全局配置,根本不知道该把/hls的请求映射到服务器上的哪个文件夹,返回404太正常了。
我给你一步步捋清楚怎么解决:
1. 补充Server和Location配置
在你的/etc/nginx/nginx.conf的http块内部,添加一个server块,专门处理这个站点的请求。假设你的HLS视频文件存在服务器的/var/www/hls_storage目录下,配置可以这么写:
server { listen 80; server_name 192.168.0.37; # 匹配/hls开头的请求(包括带斜杠的情况) location /hls/ { # 根目录指向存放HLS文件的上级目录,这样/hls/会对应到/var/www/hls_storage/ root /var/www; # 如果需要允许浏览目录内容,打开这个选项(可选) autoindex on; # 必须给HLS相关文件设置正确的MIME类型,不然浏览器可能无法解析 types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } } # 额外处理不带斜杠的/hls请求,重定向到带斜杠的版本,避免路径混乱 location = /hls { return 301 /hls/; } }
如果你的HLS文件直接存在/var/www/hls目录,那root就设为/var/www,这样请求/hls/test.m3u8就会找到/var/www/hls/test.m3u8。
2. 检查文件权限
Nginx是用www-data用户运行的,所以必须确保HLS文件所在目录的权限让这个用户能读取:
# 递归设置目录所属用户为www-data chown -R www-data:www-data /var/www/hls_storage # 设置目录和文件的可读权限 chmod -R 755 /var/www/hls_storage
3. 验证配置并重启Nginx
先检查配置有没有语法错误,这一步很重要,别直接重启搞崩服务:
nginx -t
如果输出nginx: configuration file /etc/nginx/nginx.conf test is successful,就可以重启Nginx让配置生效:
systemctl restart nginx
做完这些再访问http://192.168.0.37/hls/试试,应该就能正常访问你的HLS文件了。要是还有问题,你可以贴一下Nginx的error.log内容(在/var/log/nginx/error.log),我再帮你排查!
备注:内容来源于stack exchange,提问作者learningtech
相关产品推荐
相关产品推荐

