1 什么是frp frp可以做什么
详细地址参考frp的GitHub
- 利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。
- 对于 http, https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。
- 利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。
2 为什么要实现内网穿透
1.当你做微信开发(支付)的时候代码调试 是不是需要不断的上传才能跑起来 是不是很想直接访问本地代码
2.我家有台闲置的电脑我放了点东西 想分享给别人的时候但是别人却访问不了
这个 时候就需要内网穿透了 当然市面上也有很多其他的穿透的 比如ngrok 但是我用下来感觉还是frp方便 不是有句 php是世界上最好的语言吗?frp是最好的内网穿透工具
3 实现原理
4 准备工作
1 一台电脑
2 一个公网服务器
3.frp 下载地址 https://github.com/fatedier/frp/releases 根据自己需求去下载
5 实现步骤
5.1 安装服务器端
将下载好的文件里面的frps 和frps.ini 放在我们的公网服务器里面随便找个地方只要你知道就行
打开frps.ini 我们可以看到
# frps.ini
[common]
bind_port = 7000
对只需要这么多 然后执行
./frps -c ./frps.ini
在浏览器执行 比如你的公网ip是 111.111.111.1111 那么你输入 111.111.111.1111:7500 这个时候会显示
这个时候证明你成功搭建了服务器端 如果有问题的 请检查是否端口未开放
5.2 安装客户端
同样将下载下来的文件里面的frpc 和frpc.ini 放在咱们自己的电脑上
配置如下(111.111.111.111是你自己的公网ip)
[common]
server_addr = 111.111.111.111
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
然后执行
./frpc -c ./frpc.ini
没有报错的情况下 你尝试着
ssh -oPort=6000 用户名@111.111.111.111
如果连接上了 那么恭喜你搭建完成
更多的实例 比如搭建web服务器的 参考
本地frpc配置
[web]
type = http
local_port = 80
custom_domains = *.域名
[web_1]
type = https
local_port = 443
custom_domains = *.域名
服务器配置
vhost_http_port = 8080
vhost_https_port = 4430
subdomain_host = 你的域名
更多配置请参考https://github.com/fatedier/frp/blob/master/README_zh.md
最后一步分享nginx下如果将本地的8080端口以及其他端口转换成自己想要的比如80端口 443端口
直接上代码
server {
listen 80;
server_name 域名;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_max_temp_file_size 0;
proxy_redirect off;
proxy_read_timeout 240s;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
到此配置完了
总结
步骤 首先下载frp -> 然后服务器端配置安装->客户端安装->配置nginx ->使用