我是靠谱客的博主 纯真楼房,最近开发中收集的这篇文章主要介绍使用FRP作为内网穿透服务背景条件目的安装,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

背景

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

条件

  1. 一台具有公网IP的服务器,可以购买一台云服务器
  2. 内网服务器若干,本次以一台为例
  3. frp软件,server端和client端
  4. nginx服务,作为多个http服务的转发

目的

  1. 实现mysql的访问
  2. 实现redis的访问
  3. 实现多个http服务的访问,因为frp转发http的端口,只能设定一个,所以需要一个nginx做所有http服务的转发,可以使用前缀匹配的方式。
  4. 服务均以docker-compose形式安装,如果对docker不熟悉,请自行学习

安装

FRP的Server安装

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

mkdir -p /data/frp

2、创建frps.ini

vi frps.ini

[common]
bind_port = 17000
#与客户端的token必须设置成一致
token = 42974813dsadaqefaaa336c4eq9864bc
vhost_http_port = 10086
#vhost_http_port = 8001
#vhost_https_port = 10443
  
dashboard_port = 17500
dashboard_user = admin
dashboard_pwd = admin

tcp_mux = true
max_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]
#服务器ip
server_addr = 89.170.157.7 #你的frp的server的ip
server_port = 17000
#与客户端的token必须设置成一致
token = 42974813eqeqeqfaaa336c47b2abf7ae9864bc
  
[ssh]
type = tcp
local_ip = 192.168.1.10
local_port = 22
remote_port = 10022
use_encryption = true
use_compression = true
  
[http]
type = http
local_ip = 192.168.1.10
local_port = 10086
remote_port = 10086
custom_domains = 89.170.157.7 #你的frp的server的ip

[mysql]
type = tcp
local_ip = 192.168.1.10
local_port = 3306
remote_port = 13306
custom_domains = 89.170.157.7 #你的frp的server的ip

[redis]
type = tcp
local_ip = 192.168.1.10
local_port = 6380
remote_port = 16380
custom_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
在这里插入图片描述

至此,所有验证成功。

最后

以上就是纯真楼房为你收集整理的使用FRP作为内网穿透服务背景条件目的安装的全部内容,希望文章能够帮你解决使用FRP作为内网穿透服务背景条件目的安装所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部