使用Docker实现Frp内网穿透

ps:以下的yourdomain皆需要替换为自己的真实域名

ps:以下的yourdomain皆需要替换为自己的真实域名

ps:以下的yourdomain皆需要替换为自己的真实域名

服务器篇

  • 1.准备环境

    1.需要一个可以访问的有公网ip的服务器
    2.安装docker,docker-compose(可选)
    3.在/docker/frp/目录中创建frps.init,配置如下

    [common]
    bind_port = 7100
    # 启用面板
    dashboard_port = 7101
    # 面板登录名和密码
    dashboard_user = xxx
    dashboard_pwd = xxxxx
    # 使用http代理并使用7102端口进行穿透
    vhost_http_port = 7102
    # 使用https代理并使用7103端口进行穿透
    vhost_https_port = 7103
    # 自己的域名 (根据实际情况修改)
    subdomain_host = penetrate.yourdomain.top  
    # 服务token(根据实际情况修改),相当于连接密码,建议设置
    token = token123456789token
    
  • 2.启动Frp镜像

    两种方式:

    1.直接使用docker,按顺序分别执行以下命令

    docker pull snowdreamtech/frps:0.40.0
    
    docker run --restart=always --network host -d \
      -v /docker/frp/frps.ini:/etc/frp/frps.ini \
      --name frps snowdreamtech/frps
    

    2.使用docker-compose

    新建docker-compose.yml文件,编辑内容如下

    version: "3.9"
    x-image:
      &frp-image
        snowdreamtech/frps:0.40.0
    services:
      frp40:
        image: *frp-image
        container_name: frp40
        network_mode: host
        restart: always
        volumes:
          - /data/frp/frps.ini:/etc/frp/frps.ini
    

    执行命令

    docker-compose up -d
    

    3.查看启动日志

    执行命令

    docker logs -f 9f85e467c187(容器id,这里需要根据实际情况修改)
    

    显示如下即可

    20220324112805.png

    服务端启动完成

域名篇

  • 1.设置域名,将所有二级域名为penetrate的三级域名都指向公网服务器

image.png
  • 2.通过Nginx将三级域名指向7102端口

 server {
         listen       80;
         server_name  *.penetrate.yourdomain.top;
         #可使用带下滑线的请求头
         underscores_in_headers on;
         #不忽略带下划线的变量
         ignore_invalid_headers off;
         proxy_set_header   Host              $http_host;
         proxy_set_header   X-Real-IP         $remote_addr;
         proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
         location / {
               proxy_pass http://127.0.0.1:7102;
           }
     }

客户端篇

  • 1.访问 https://github.com/fatedier/frp/releases 下载对应的客户并解压,要与服务端版本一致

  • 2.修改 frpc.ini 文件

      [common]
      server_addr = 127.0.0.1 [你的公网ip或解析到该ip的域名]
      server_port = 7100
      token = token123456789token
      [penetrate]
      type=http
      local_port= 12789
      subdomain = test [三级域名,可修改]
    
  • 3.通过命令行启动frpc,以windows为例,通过cmd窗口执行

        frpc.exe
    

    显示
    image.png

    即可

验证篇

在本机启动一个web服务(这里用一个接口文档举例),服务端口为frpc.ini中设置的12789
本地访问 http://127.0.0.1:12789/doc.html

image.png

访问 http://test.penetrate.yourdomain.top/doc.html
image.png

你可能感兴趣的:(使用Docker实现Frp内网穿透)