4000-520-616
欢迎来到免疫在线!(蚂蚁淘生物旗下平台)  请登录 |  免费注册 |  询价篮
主营:原厂直采,平行进口,授权代理(蚂蚁淘为您服务)
咨询热线电话
4000-520-616
当前位置: 首页 > 新闻动态 >
新闻详情
使用FRP作为内网穿透服务_富兰克思的博客-CSDN博客
来自 : CSDN技术社区 发布时间:2021-03-25

背景

需要远程访问办公环境的内网服务器 原来使用的是花生壳之类的软件 但是存在很多不确定性 最近研究了一下开源内网穿透软件frp 总结了一些心得 分享一下。

条件 一台具有公网IP的服务器 可以购买一台云服务器内网服务器若干 本次以一台为例frp软件 server端和client端nginx服务 作为多个http服务的转发 目的 实现mysql的访问实现redis的访问实现多个http服务的访问 因为frp转发http的端口 只能设定一个 所以需要一个nginx做所有http服务的转发 可以使用前缀匹配的方式。服务均以docker-compose形式安装 如果对docker不熟悉 请自行学习 安装 FRP的Server安装

1、在服务器上创建frp目录

mkdir -p /data/frp

2、创建frps.ini

vi frps.ini

[common]bind_port 17000#与客户端的token必须设置成一致token 42974813dsadaqefaaa336c4eq9864bcvhost_http_port 10086#vhost_http_port 8001#vhost_https_port 10443dashboard_port 17500dashboard_user admindashboard_pwd admintcp_mux truemax_pool_count 10

3、创建docker-compose-frps.yml

vi docker-compose-frps.yml

version: 3 services: frps: image: snowdreamtech/frps ports: - 17000:17000  - 27500:17500  - 10022:10022 #用于ssh连接 - 10086:10086 #用于开放给外网访问http服务 - 13306:13306 #用于开放给外网访问mysql - 16380:16380 #用于开放给外网访问redis # 更多端口根据实际需求增加 volumes: - ./frps.ini:/etc/frp/frps.ini container_name: frps environment: TZ: Asia/Shanghai restart: always

4、启动frp服务

docker-compose -f docker-compose-frps.yml up -d

至此 frp的server的服务启动成功 可以通过frp的管理界面查看
\"在这里插入图片描述\"

FRP Client部署

1、在内网客户端服务器上创建frp目录

mkdir -p /data/frp

2、创建frpc.ini

vi frpc.ini

[common]#服务器ipserver_addr 89.170.157.7 #你的frp的server的ipserver_port 17000#与客户端的token必须设置成一致token 42974813eqeqeqfaaa336c47b2abf7ae9864bc[ssh]type tcplocal_ip 192.168.1.10local_port 22remote_port 10022use_encryption trueuse_compression true[http]type httplocal_ip 192.168.1.10local_port 10086remote_port 10086custom_domains 89.170.157.7 #你的frp的server的ip[mysql]type tcplocal_ip 192.168.1.10local_port 3306remote_port 13306custom_domains 89.170.157.7 #你的frp的server的ip[redis]type tcplocal_ip 192.168.1.10local_port 6380remote_port 16380custom_domains 89.170.157.7 #你的frp的server的ip

3、创建docker-compose-frpc.yml

vi docker-compose-frpc.yml

version: 3 services: frpc: image: cloverzrg/frpc-docker volumes: - ./frpc.ini:/conf/frpc.ini container_name: frpc network_mode: host

4、启动服务

docker-compose -f docker-compose-frpc.yml up -d

安装redis和mysql服务

该部分自动安装可验证
省略

安装Http服务

端口为8001

安装Nginx服务

使用docker-compose-nginx.yml安装

version: 3 services: nginx: image: nginx:latest restart: always container_name: nginx network_mode: host ports: - 10086:10086 volumes: - /data/aiaas/logs/nginx:/var/log/nginx - /data/aiaas/nginx/conf.d:/etc/nginx/conf.d environment: - TZ Asia/Shanghai logging: options: max-size: 100m  max-file: 10 

配置nginx的转发

vi nginx/conf.d/default.conf

client_max_body_size 500m;gzip on;gzip_min_length 1k;gzip_buffers 4 16k;gzip_comp_level 5;gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/json;add_header r-Upstream $upstream_addr;client_header_buffer_size 5k;large_client_header_buffers 8 16k;server { listen 80 default_server; server_name _; return 404; #access_log off;server { listen 10086; #server_name admin.aicc.lingban.cn; #charset koi8-r; #access_log /var/log/nginx/host.access.log main; #location / { # proxy_pass http://127.0.0.1:8001; #所有以web开头前缀的URL 都做转发 且替换web这个前缀 location ^~/web/ { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; proxy_pass http://127.0.0.1:8001/; location ~* \\.(?:jpg|jpeg|gif|png|ico|cur|gz|svgz|mp4|ogg|ogv|webm|htc)$ { expires 1M; access_log off; add_header Cache-Control public ; proxy_pass http://127.0.0.1:8001; # CSS and Javascript location ~* \\.(?:css|js)$ { expires 1M; access_log off; add_header Cache-Control public ; proxy_pass http://127.0.0.1:8001; #error_page 404 /404.html; # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location /50x.html { root /usr/share/nginx/html;

5、测试验证 通过访问 访问的ip为frp server的ip
\"在这里插入图片描述\"

至此 所有验证成功。

本文链接: http://frpservices.immuno-online.com/view-748845.html

发布于 : 2021-03-25 阅读(0)