简介:在我们树莓派只有内网IP的时候,我们需要借助代理服务来帮我们实现请求转移,像Nginx,Apache等代理服务器也有代理功能,但是更多负责的是“负载均衡”,花生壳有流量限制不适用,所以我们选择给树莓派部署开源的goproxy。
下面我将用Gitea部署作为例子,其中Gitea在树莓派启动端口为3000
。
sudo curl -L https://raw.githubusercontent.com/snail007/goproxy/master/install_auto.sh | sudo bash
访问不到的可以用我的代理
sudo curl -L https://github.dongbox.workers.dev/https://raw.githubusercontent.com/snail007/goproxy/master/install_auto.sh | sudo bash
命令会在本地生成两个文件proxy.crt proxy.key, 相当于账号和密码,用于服务连接的验证。
sudo proxy keygen -C proxy
这里设定goproxy服务端与客户端的通信端口为9999
。4343
属于服务器访问端口,之后我们访问云服务器IP:4343
就可以正常访问树莓配的Gitea服务。3000
属于Gitea默认端口,如修改这里需要填上自己的。
sudo proxy bridge -p ":9999" -C proxy.crt -K proxy.key --daemon
sudo proxy server -r ":4343@:3000" -P "127.0.0.1:9999" -C proxy.crt -K proxy.key --daemon
这个之前服务器所使用的安装脚本会默认拉取amd版本的goproxy,而树莓派需要arm,所以我们需要到realease页面https://github.com/snail007/goproxy/releases
找到自己需要的版本,这里我更换为proxy-linux-arm-v6.tar.gz
sudo curl -L https://raw.githubusercontent.com/snail007/goproxy/master/install_auto.sh | sudo bash
创建goproxy
文件夹并进入
mkdir ~/goproxy
cd ~/goproxy
下载并解压
!!!这里一定一定注意自己的系统版本,如果使用的是树莓派32位官方镜像,那么使用的就是
arm-v6
,像我另外还使用ARM64
系统,此处就需要找到proxy-linux-arm64-v8.tar.gz
进行操作。
wget https://github.com/snail007/goproxy/releases/download/v11.3/proxy-linux-arm-v6.tar.gz
tar -zxvf proxy-linux-arm-v6.tar.gz
下载速度慢的可以用我做好代理的地址
wget https://github.dongbox.workers.dev/https://github.com//snail007/goproxy/releases/download/v11.3/proxy-linux-arm-v6.tar.gz
tar -zxvf proxy-linux-arm-v6.tar.gz
将之前云服务器生成的密钥下载下来放到~/goproxy
此目录下,然后就可以在当前文件夹运行开始服务了,9999
端口为服务器所设定的代理通信端口。
sudo ./proxy client -P 云服务器ip:9999 -C proxy.crt -K proxy.key
到此如没有报错我们访问云服务器IP:4343
就可以访问到我们所部署在树莓派上的Gitea服务了。
在这里,服务端所用端口数量:2
; 客户端所用端口数量:1
.
树莓派这边有一个goproxy客户端,客户端本地需要代理来自9999
端口的请求,代替其访问3000
端口的服务并返回,客户端启动后与向服务器的goproxy服务端建立一个长连接通道,在长连接建立后不仅客户端可以向服务端发送请求,服务端也具备了向客户端发送请求的功能。
服务端这边有一个goproxy服务端,4343
端口专门代理来自公网的请求转移请求至9999
端口,也即是与客户端建立长连接的端口,再到树莓派上的Gitea服务本身。所以此处的请求轨迹为4343->9999(服务端)->9999(客户端)->3000
,最终通过代理实现了访问云服务器IP:4343
就可以访问Gitea服务的需求。