什么是frp

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

为什么使用 frp

通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:

客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。代理组间的负载均衡。端口复用,多个服务通过同一个服务端端口暴露。多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。服务端和客户端 UI 页面。

服务端安装

本文主要介绍采用docker安装,首先从docker hub下载frp的服务端frps。

用docker下载frp服务端;

docker pull snowdreamtech/frps:0.44.0

创建配置文件frps.ini

[common]

# 服务端口

bind_port = 7100

# 控制启用面板每页端口

dashboard_port = 7101

# 面板登录名和密码

dashboard_user = admin

dashboard_pwd = 123456

# 使用http代理并使用7102端口进行穿透

vhost_http_port = 7102

# 使用https代理并使用7103端口进行穿透

vhost_https_port = 7103

#域名

subdomain_host = frp.ch-vip.cn

# 服务token(根据实际情况修改),相当于连接密码,建议设置

token =123456

运行

docker run -p 7100-7103:7100-7103 -d \

-v /usr/myapp/frp/frps.ini:/etc/frp/frps.ini \

--name frps snowdreamtech/frps:0.44.0

域名配置

将域名frps.ch-vip.cn二级域名指向服务器,并且*.frps.ch-vip.cn三级域名也指向服务器,三级域名指向服务使客户端可以自定义域名进行访问。

验证是否启动

通过访问地址http://frp.ch-vip.cn:7101,能够打开页面并登录成功,说明安装部署成功。

客户端使用

下载客户端

目前可以在 Github 的 Release 页面中下载到最新版本的客户端和服务端二进制文件,所有文件被打包在一个压缩包中.

修改配置文件frpc.ini

[common]

#连接服务端的地址

server_addr = frps.ch-vip.cn

#连接服务端的端口

server_port = 7100

#鉴权使用的 token 值

token = 123456

[web1]

#代理类型

type = http

#本地服务端口

local_port = 8081

#自定义子域名,只需要指定域名前缀

subdomain = test1

[web2]

#代理类型

type = http

#本地服务端口

local_port = 8082

#自定义子域名,只需要指定域名前缀

subdomain = test2

启动客户端

通过cmd命令行运行如下命令

./frpc -c ./frpc.ini

#或者

frpc -c frpc.ini

在浏览器中打开test1.frps.ch-vip.cn:7102即可访问自己代理的服务。

更多配置请参考frp官方网站

nginx配置

通过nginx配置,实现管理面板及我们代理的地址都使用80端口。

创建docker网络

此处创建网络不是必须的,不创建网络容器也会加入一个默认网络。

docker network create --driver=bridge --subnet=192.168.0.0/16 --gateway=192.168.1.1 --ip-range=192.168.1.0/24 tmnet

创建nginx容器

nginx配置

server {

listen 80;

server_name frps.ch-vip.cn *.frps.ch-vip.cn;

location / {

proxy_pass http://192.168.1.200:7102;

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;

}

}

server {

listen 80;

server_name frps-dashboard.ch-vip.cn;

location / {

proxy_pass http://192.168.1.200:7101;

index index.html index.htm;

}

}

启动nginx并加入网络

docker run -p 80:80 -p 443:443 --net tmnet --ip 192.168.1.4 \

-v /usr/myapp/nginx/file:/var/file \

-v /usr/myapp/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \

-v /usr/myapp/nginx/logs:/var/log/nginx \

-v /usr/myapp/nginx//run:/var/run \

--name nginx -d nginx:1.15tm

重启frps服务

不需要修改ffps.ini文件,此时启动frps服务时,不再暴露除7000以外的其他端口

docker run -p 7100:7100 --net tmnet --ip 192.168.1.200 -d \

-v /usr/myapp/frp/frps.ini:/etc/frp/frps.ini \

--name frps snowdreamtech/frps:0.44.0

客户端服务重启一下,之后就可以使用http://h5.frps.ch-vip.cn正常访问了,不再需要输入端口号

域名配置

将域名frps-dashboard.ch-vip.cn指向服务器地址,即可实现http://frps-dashboard.ch-vip.cn访问frps控制面板。 到此已实现nginx代理80端口实现转发。

好文链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: