就像这种效果,可以在局域网内分享文件,其他人还可以上传,就像ftp那样。
有了它,可以在内网种非常简便的给别人发文件,不再需要某些用户量非常庞大还很恶心的“流氓软件”。
正文开始
文件服务器部分
这个东西分为两个部分,一是文件服务器程序,二是web服务器nginx(主要用于反向代理)
先来搞http文件服务器程序,在GitHub上看到的一个1.8k Star的一个Go程序
codeskyblue/gohttpserver: The best HTTP Static File Server, write with golang+vue (github.com)
点开链接把他下载下来。
Windows版本竟然也使用了tar.gz格式。无大碍,找个解压缩软件把它解压出来,只要这个exe文件即可。然后在电脑上找一个安装位置把他存下来。
然后直接打开它测试一下,这时候会弹出一个防火墙是否放行,一定要选择允许,否则就废了,不允许的话只有你自己可以访问这个网页。然后需要把你当前连接的网络设置成专用网络,前提是你信任你正在使用的网络,它不会导致你的电脑出现网络安全问题。
如果你忘了点击防火墙的允许访问,可以把这个程序删掉,重新解压,换个文件名再打开。
根据命令行提示的内容,这个程序占用的是8000端口(每个人有可能不一样),在浏览器中打开http://localhost:8000/
,像下面这样,说明软件运行正常。
然后进行下一步,把这个软件安装成系统服务,这样就可以实现开机自启并后台运行。
安装服务前先看一下程序的运行参数。
我的需求是别的可以看到我的文件,也可以给我上传文件。所以不加访问验证,启用上传文件功能。
根据这些需求来添加一些启动参数。
./httpserver.exe --root "D:\httpServerFile" --upload
在命令行中测试一下是否生效。
可以的话继续,把这个程序安装成一个系统服务。
推荐一个自动化安装为系统服务的程序,属于是Instsrv.exe和srvany.exe的GUI版本,操作起来比较简单。
cxwl3sxl/AnyExeToService: install any exe program to window service (github.com)
像下面这样设置,然后点击安装。
在软件下方的输出中查看是否安装成功,成功了之后,在浏览器中访问一下。
好啦,现在文件服务器就已经安装成功了,如果不需要域名的话,可以直接IP+端口号访问了,如果学校局域网访问的话,可以在宿舍路由器搞一个端口映射。
nginx反向代理部分
下面是nginx反向代理通过域名访问的方法。
在nginx官网上下载下来,解压到你要安装的目录。
然后再用 AnyExeToService.exe 把他安装成系统服务
找到nginx的配置文件
添加文件服务器的反向代理配置
http{
# server的配置修改成一下内容,填入你想要的域名,如果有
server {
# listen 443 ssl; # 如果开启了https,请打开监听443端口
# listen [::]:1213 ssl; # 监听ipv6和ipv6的端口。
listen 80;
server_name your-domain-name.com; # 你要使用的域名
location / {
proxy_pass http://127.0.0.1:8800; # http文件服务器的IP
proxy_redirect off;
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;
client_max_body_size 0; # disable upload limit
# Https相关配置
# ssl_certificate D:\File\certificate.pem;
# ssl_certificate_key D:\File\certificate.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
}
}
}
如果要使用ipv6,那么不要使用80和443端口,法律原因,因为服务器未备案。
配置完成之后,进入服务管理重启nginx,把域名解析到你的内网IP。然后可以通过域名访问了。
内网访问可以不用配置ssl,传输安全问题按情况可以忽略。
如果内网IP经常变化,可以在电脑上安装一个ddns服务。
jeessy2/ddns-go: 简单好用的DDNS。自动更新域名解析到公网IP(支持阿里云、腾讯云dnspod、Cloudflare、华为云、百度云、porkbun) (github.com)
大佬,有没有什么更牛逼的求推荐,支持登录的那种?
This is excellent, works well on my server.
thank you, love from China, lol!