ps:以下的yourdomain皆需要替换为自己的真实域名
ps:以下的yourdomain皆需要替换为自己的真实域名
ps:以下的yourdomain皆需要替换为自己的真实域名
服务器篇
-
1.准备环境
1.需要一个可以访问的有公网ip的服务器
2.安装docker,docker-compose(可选)
3.在/docker/frp/目录中创建frps.init,配置如下[common] bind_port = 7100 # 启用面板 dashboard_port = 7101 # 面板登录名和密码 dashboard_user = xxx dashboard_pwd = xxxxx # 使用http代理并使用7102端口进行穿透 vhost_http_port = 7102 # 使用https代理并使用7103端口进行穿透 vhost_https_port = 7103 # 自己的域名 (根据实际情况修改) subdomain_host = penetrate.yourdomain.top # 服务token(根据实际情况修改),相当于连接密码,建议设置 token = token123456789token
-
2.启动Frp镜像
两种方式:
1.直接使用docker,按顺序分别执行以下命令
docker pull snowdreamtech/frps:0.40.0
docker run --restart=always --network host -d \ -v /docker/frp/frps.ini:/etc/frp/frps.ini \ --name frps snowdreamtech/frps
2.使用docker-compose
新建docker-compose.yml文件,编辑内容如下
version: "3.9" x-image: &frp-image snowdreamtech/frps:0.40.0 services: frp40: image: *frp-image container_name: frp40 network_mode: host restart: always volumes: - /data/frp/frps.ini:/etc/frp/frps.ini
执行命令
docker-compose up -d
3.查看启动日志
执行命令
docker logs -f 9f85e467c187(容器id,这里需要根据实际情况修改)
显示如下即可
服务端启动完成
域名篇
-
1.设置域名,将所有二级域名为penetrate的三级域名都指向公网服务器
-
2.通过Nginx将三级域名指向7102端口
server {
listen 80;
server_name *.penetrate.yourdomain.top;
#可使用带下滑线的请求头
underscores_in_headers on;
#不忽略带下划线的变量
ignore_invalid_headers off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://127.0.0.1:7102;
}
}
客户端篇
-
1.访问 https://github.com/fatedier/frp/releases 下载对应的客户并解压,要与服务端版本一致
-
2.修改 frpc.ini 文件
[common] server_addr = 127.0.0.1 [你的公网ip或解析到该ip的域名] server_port = 7100 token = token123456789token [penetrate] type=http local_port= 12789 subdomain = test [三级域名,可修改]
-
3.通过命令行启动frpc,以windows为例,通过cmd窗口执行
显示frpc.exe
即可
验证篇
在本机启动一个web服务(这里用一个接口文档举例),服务端口为frpc.ini中设置的12789
本地访问 http://127.0.0.1:12789/doc.html
访问 http://test.penetrate.yourdomain.top/doc.html