pixman给出的docker部署成功后,可以在公网上方便的观看电视节目,方便了自己,也方便了别人,但是如果您服务器如果负栽能力一般,就需要做一些措施防止别人扫你的m3u
步骤有两步
1,先把docker的端口绑定到127.0.0.1上,可以在docker-compose.yml上加入这么一个环境变量
ports:
- 127.0.0.1:3399:5000
这样外网就无法访问3399端口的文件了
2,安装nginx,编辑/etc/nginx/sites-available/default
这个文件
server {
listen 80;
server_name abc.com;
location /ham/ {
proxy_pass http://127.0.0.1:3399/;
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_set_header X-Forwarded-Proto $scheme;
}
}
这样就能在外网上,用“域名+目录”的方式访问内网的m3u了,即使你知道域名,但是你不知道“目录”路径,还是无法访问内网的m3u
参考上面参数,正确的访问方式应该是这样的:http://abc.com/ham/m3u
需要特别注意的是,如果你的nginx默认有如下语句:
try_files $uri $uri/ =404;
请一定要删掉或者用“#”符号屏蔽掉
更新:
上面的法子有瑕疵,只能下载m3u,但是m3u里边的地址如果默认是含域名+端口,还得再上手段
整个过程历时4个多钟,终于在chatgpt的帮助下,找到了正确的处理方法,就是上两层反代
思路就是先把对abc.com域名的访问,第一层反代时将其反代到abc.com:3399
然后在第二层反代的时候,将含路径/ham/的网址反代到127.0.0.1:3399
在摸索过程中,chatgpt一开始是提议写两个server block,第一个server block监听80,第二个server block监听3399
但是这样的话就会跟docker的3399端口冲突了,跟chatgpt商量后,它给出了筛选路径的方法,就是:location /ham/ {}
这个细节真真切切的让我感受到了chatgpt有一种温情,智慧,贴心。
具体代码如下:
server {
listen 80;
server_name abc.com;
root /var/www/html;
location / {
proxy_pass http://abc.com:3399;
}
location /ham/ {
proxy_pass http://127.0.0.1:3399/; # 内网地址和端口
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_set_header X-Forwarded-Proto $scheme;
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
# try_files $uri $uri/ =404;
}
#中间隐去其他代码
}
文章评论