前几天在我自己的主机上部署了一个Seafile,作为个人使用。但是这个主机连接的是校园网,于是乎需要进行穿透以便我在外使用。
之前有看到过花生壳等等,但是鉴于我有一台公网服务器,因此这次我采用经典的Frp直接将服务代理到公网。
部署方法
- 到Github上下载Frp的Release并解压将文件夹传到公网服务器和内网服务器
网址:https://github.com/fatedier/frp/releases - 修改文件夹的名字,日后维护的时候你会感谢你自己的这个举手之劳
mv frp_0.xx.0_linux_amd64 frp
- 配置服务端(公网服务器)
- 打开该文件夹
- 编辑frps.ini
[common] #用于客户端和服务端连接的端口 bind_port = # 反向代理的http端口 vhost_http_port = # 反向代理的https端口 vhost_https_port = # 控制界面端口 dashboard_port = # 控制界面用户名 dashboard_user = # 控制界面密码 dashboard_pwd = # 若要使用frp,需要提供令牌以确保安全 token = # 日志文件路径 log_file = ./frps.log # 日志记录错误级别,分为:trace, debug, info, warn, erro log_level = warn # 日志保存最大天数 log_max_days = 30 # 代理的网站域名 subdomain_host = https://your_domain
- 后台开启运行
nohup ./frps -c frps.ini &
- 查看输出日志,如果有success就说明成功了
tail -f nohup.out
- 配置客户端(内网服务器)
- 打开该文件夹
- 编辑frpc.ini
注意:这里我使用了nginx在内网服务器做代理转发,所以没有ssl信息,直接代理http[common] # 填写服务器实际IP server_addr = # 用于客户端和服务端连接的端口 server_port = # 向服务器出示令牌 token = # 代理的服务名称,这个是自己随便起的 # 做一个穿透到公网的网站 [web] # 代理的协议类型 type = http # 服务在本地的位置 local_port = # 代理该服务端公网域名 custom_domains = https://your_domain # 代理的服务名称,这个是自己随便起的 # 做一个远程 ssh 服务 [ssh] # 代理的协议服务 type = tcp # 本机 ip local_ip = # 这个服务在本机的位置,如果是 ssh 默认就是 22 local_port = 22 # 占用公网服务器的端口号,不用在服务端约定好,但要避免重复 remote_port =
- 后台开启运行
nohup ./frpc -c frpc.ini &
- 查看输出日志,如果有success就说明成功了
tail -f nohup.out
- 试试效果,如果可以访问,就大功告成
这里要指出 frp 服务端可以为多个客户端服务,但是一定要避免端口冲突 - 关闭一个 frp 服务的方法
使用以下命令查看 frp 的进程
然后根据输出的进程编号杀掉这个进程ps -aux|grep frp| grep -v grep
kill xxxx