突然发现了snapdrop这个好玩意,自己部署了个,发现不在一个局域网内也会显示设备图标,这能忍吗?不能
研究了下,snapdrop是根据公网ip判断是否在一个局域网,看了下nginx的配置,应该是真实ip的传递出了问题
下面有2种解决方案
docker拉取没什么说的
docker pull linuxserver/snapdrop
接下来有个小坑,这个镜像里面是有个nginx的,官方文档推荐暴露80和443端口,ssl证书配置在容器内部,但是一般不是放这种方式
我一般喜欢在docker前面加个nginx代理,配置ssl证书比较统一,但是直接前面加个nginx 的话,由于存在二级代理,snapdrop会出现不在一个局域网内也会出现传输图标的情况,这是由于真实IP的问题,下面有2个解决方案
1.直接修改容器内的nginx 配置文件
# 进入容器内部
docker exec -it {ID} bash
vi /config/nginx/site-confs/default.conf
#将
location /server {
--------
}
# 中的
proxy_set_header X-Forwarded-for $remote_addr;
# 修改为
proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for;
nginx -s reload
# 即可
此方式有个弊端,更新容器后需要重新修改配置
2.直接暴露3000端口
# 创建容器是直接暴露3000端口
docker run -d --name snapdrop --restart=always -p 3000:3000 -d linuxserver/snapdrop
# 到github下载源码
https://github.com/RobinLinus/snapdrop
# 将client文件夹放到/software/www/client(看自己喜好)
# 在nginx 中配置为
location / {
root /software/www/client;
index index.html index.htm;
}
location /server {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-PORT $remote_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
}
# 将前后端分离即可