内网穿透:frp安装与使用
#前提 有一个自己的域名
一、什么是frp
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 frp分为服务端(frps)和客户端(frpc)
二、客户端安装
2.1、frpc安装
wget https://files.ioiox.com/projects/frp/frpc/frpc_synology_install.sh && chmod +x frpc_synology_install.sh && ./frpc_synology_install.sh
#安装成功,请先修改 frpc.ini 文件,确保格式及配置正确无误!
vi /usr/local/frp/frpc.ini
#修改完毕后执行以下命令启动服务并保持后台运行:
nohup /usr/local/frp/frpc -c /usr/local/frp/frpc.ini >/dev/null 2>&1 &
2.2、frpc.ini配置
[common]
# 服务器IP或者地址
server_addr = 服务端IP/域名
# 服务器提供的端口号
server_port = 7000
# 服务器提供的token
token = 123456
# 为避免错误,一定需更改为比较特殊的名称,不能和服务器端其他配置重名.
[web1_xxxxxx]
# http协议
type = http
# 填写内网IP.
local_ip = 192.168.0.88
# 内网HTTP端口
local_port = 8080
# 填写你的域名
custom_domains = 域名
2.3、使用
网上有提供frps服务的第三方网站可以先体验一下、先让服务能正常外网访问,再考虑自己搭建frps。 自己搭建frps的优势:
- 稳定,第三方网站使用人数较多肯定会出现挤占带宽的情况。
- 数据安全,中间链路自己说了算::(狗头)。
三、服务端安装
准备一台服务器最低配都行、宽带更重要,本站带宽是3Mb访问速度可以自己体会一下。
3.1、frps安装
#下载脚本
wget https://code.aliyun.com/MvsCode/frps-onekey/raw/master/install-frps.sh -O ./install-frps.sh
#设置脚本运行权限
chmod 700 ./install-frps.sh
#执行脚本
./install-frps.sh install
- 选择源 1是Aliyun,2是Github。选1
{callout color="red"} 博主没有截图就用文字写一下配置顺序,后续步骤可以选择默认选项,配置修改,放心操作
- 服务端口、客户端连接使用
- http端口
- https连接
- 管理页面端口
- 管理页面登录用户名
- 管理页面登录密码
- token 、客户端连接使用
- 设置域名或者本地IP
以上选择完安装就结束了 frps官方文档安装好之后可以通过 frps config 指令修改或者查看配置。所以忘记了也不怕 ps: 默认配置文件地址 /usr/local/frps/frps.ini
3.2、启动
# 启动
frps start
#停止
frps stop
3.3、管理页面访问
成功能看到如下页面 如果不成功请检查服务器安全组和防火墙是否开放。 
3.4、nginx配置
- http访问
server {
listen 80;
server_name 域名;
location / {
proxy_pass http://127.0.0.1:frp_http端口;
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;
}
}
- http强制https访问
server {
listen 443 ssl;
charset utf-8;
server_name 域名;
ssl_certificate 域名证书;
ssl_certificate_key 域名key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
# 根目录访问
location / {
proxy_pass http://127.0.0.1:frp_http端口;
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;
proxy_set_header X-Real-IP $remote_addr;
break;
}
}
