#前提 有一个自己的域名

一、什么是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配置

frpc官方文档open in new window

[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的优势:

  1. 稳定,第三方网站使用人数较多肯定会出现挤占带宽的情况。
  2. 数据安全,中间链路自己说了算::(狗头)。

三、服务端安装

准备一台服务器最低配都行、宽带更重要,本站带宽是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. 选择源 1是Aliyun,2是Github。选1

{callout color="red"} 博主没有截图就用文字写一下配置顺序,后续步骤可以选择默认选项,配置修改,放心操作

  1. 服务端口、客户端连接使用
  2. http端口
  3. https连接
  4. 管理页面端口
  5. 管理页面登录用户名
  6. 管理页面登录密码
  7. token 、客户端连接使用
  8. 设置域名或者本地IP

以上选择完安装就结束了 frps官方文档open in new window安装好之后可以通过 frps config 指令修改或者查看配置。所以忘记了也不怕 ps: 默认配置文件地址 /usr/local/frps/frps.ini

3.2、启动

# 启动
frps start

#停止
frps stop

3.3、管理页面访问

成功能看到如下页面 如果不成功请检查服务器安全组和防火墙是否开放。 frps

3.4、nginx配置

  1. 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;
        }
    }

  1. 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;
       	}
    }