当前位置:   article > 正文

docker+frps实现内网穿透_docker实现内网穿透

docker实现内网穿透

什么是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
  • 1

创建配置文件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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

运行

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
  • 1
  • 2
  • 3

域名配置

将域名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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

启动客户端

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

./frpc -c ./frpc.ini
#或者
frpc -c frpc.ini
  • 1
  • 2
  • 3

在浏览器中打开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
  • 1

创建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;
		}
	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
启动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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

重启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
  • 1
  • 2
  • 3

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

域名配置

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/403241
推荐阅读
相关标签
  

闽ICP备14008679号