zoukankan      html  css  js  c++  java
  • frp使用总结

    笔者所知并成功实现内网穿透的方法:

    • 花生壳 (需要花8块钱,使用花生壳给的二级域名,这里不做介绍)
    • ngrok (免费,但是每次重启服务二级域名会变,付费的$5每月不会变)
    • frp(开源免费,需要有自己的服务器和公网IP)

    Ngrok的使用:

      ngrok的使用很简单,如果不是长期需要域名穿透服务的话建议使用ngrok,ngrok官网

    1. 下载并安装ngrok

      请务必在其他任何事情之前下载ngrok按照说明确保它已正确安装。

    2. 连接您的帐户(如果没有注册ngrok这步可跳过)

      运行此命令会将您帐户的authtoken添加到您的ngrok.yml文件中。这将为您提供更多功能,所有打开的隧道将在仪表板的这里列出。

      ./ngrok authtoken xxxxxx
    3. 开始你的第一个隧道

      一旦运行了本地服务器或其他程序,就可以打开指向当前正在运行的端口的隧道。如果遇到问题,请阅读文档以探索其他隧道选项。

      ./ngrok http 80

      每次启动隧道时,免费ngrok帐户都会收到一个随机URL。升级到付费计划,仅为您的帐户保留ngrok子域名,设置自定义CNAME等等。

    Frp的使用:

      frp有服务器端(frps)和客户端(frpc)之分,在Linux和Windows上都可使用,下载地址

    1. Linux服务器端安装
    wget https://github.com/fatedier/frp/releases/download/v0.13.0/frp_0.13.0_linux_amd64.tar.gz  #下载frp
    tar -zxvf frp_0.13.0_linux_amd64.tar.gz #解压
    cd frp_0.13.0_linux_amd64 #进入目录
    rm -rf frpc_full.ini frpc frpc.ini #删除frpc相关的文件,frpc属于客户端
    vi frps.ini   #编辑frps配置文件
    ./frps -c ./frps.ini  #启动frps

      2.frps.ini

    [common]
    bind_port = 7000 #与客户端绑定的进行通信的端口  
    vhost_http_port = 8080 #访问客户端web服务自定义的端口号
    subdomain_host = frp.abc.com #自定义二级域名
    privilege_token = xxxx  #token验证(可不加)
     
    #控制面板
    dashboard_port = 7500
    dashboard_user = admin
    dashboard_pwd = admin
    
    #日志
    log_file = ./frps.log
    log_level = info
    log_max_days = 3
    
    [web1]
    type = http
    subdomain = web1
    auth_token = XXX
    
    [web2]
    type = http
    subdomain = web2
    auth_token = XXX

      3.Linux客户端安装

    wget https://github.com/fatedier/frp/releases/download/v0.13.0/frp_0.13.0_linux_amd64.tar.gz  #下载frp
    tar -zxvf frp_0.13.0_linux_amd64.tar.gz #解压
    cd frp_0.13.0_linux_amd64 #进入目录
    rm -rf frps_full.ini frps frps.ini #删除frps相关的文件,frps属于服务端
    vi frpv.ini   #编辑frps配置文件
    ./frpc -c ./frpc.ini  #启动frpc

      4.frpc.ini

    [common]
    server_addr = x.x.x.x  #远程服务器地址
    server_port = 7000
    privilige_token = XXX #token验证(服务器加了就加这)
    
    [web1]
    type = http
    local_port = 3000
    local_ip = 127.0.0.1 #如果绑定的是本机IP的话,这里改成本机IP即可,此行也可忽略不加,默认为127.0.0.1
    subdomain
    = web1

      5.配置服务器上的Nginx 让frp用上80端口

    server {
        listen 80;
        server_name *.frp.abc.com;
        location / {
            proxy_pass http://127.0.0.1:8080;
            proxy_set_header    Host            $host:80;
            proxy_set_header    X-Real-IP       $remote_addr;
            proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_hide_header   X-Powered-By;
        }
    }

    到这里 我们访问 web1.frp.abc.com 便可访问到自己本地的服务 

    windows下的frp的配置文件和linux下使一样的!

    使用screen让frp在后台运行

    首先使用screen指令创建一个会话。

    screen -dmS frp

    然后进入这个会话

    screen -r frp

    删除一个screen窗口

    screen -ls  #查看要删除的screen 进程id
    kill -9 xxx #杀掉该进程
    screen  -wipe #清除杀掉的screen

    这套东西对微信调试很有用:) 

    参考资料:

    使用frp实现内网穿透   

    让frp和Nginx共用80端口 

    frp官方资料  

    遇到的坑

    1、frps和frpc一定要配套,要是哪个版本都是哪个版本   

    2、 windows中 需要借助cmd

     frpc.exe -c frpc.ini

     3、如果frps启动没有问题,并且7500端口的仪表盘可以访问,frpc却连不上,那就把服务器上的防火墙关了把

     ==========更=========

    对外提供简单的文件访问服务

    通过 static_file 插件可以对外提供一个简单的基于 HTTP 的文件访问服务。

    #frpc.ini

    [static_file]
    type = tcp
    remote_port = 6008
    plugin = static_file
    plugin_local_path = /root/www/brain_storming/dist
    plugin_strip_prefix = static
    plugin_http_user = abc
    plugin_http_passwd = abc

    通过浏览器访问 http://x.x.x.x:6008/static/ 来查看位于 /root/www/brain_storming/dist 目录下的文件,会要求输入已设置好的用户名和密码。

    关于穿透 https

    其实跟frp没有关系,直接配置nginx即可,需要注意的是一般没有泛型域名的证书,读者自行取舍吧

    这里8080是 frps中v_host_port ,这里浏览器只认https://nb.bestbing.cn,因为证书是这个域名的

    server{
            listen 443 ssl;
            server_name  *.bestbing.cn;
            ssl_certificate /home/xuebing/cert/nb.bestbing.cn.pem;
            ssl_certificate_key /home/xuebing/cert/nb.bestbing.cn.key;
            ssl_session_cache shared:SSL:1m;
            ssl_session_timeout 5m;
            ssl_ciphers HIGH:!aNULL:!MD5;
            ssl_prefer_server_ciphers on;
            location /{
                    proxy_pass http://localhost:8080;
                    proxy_set_header Host $host;
                    proxy_http_version 1.1;
                    proxy_set_header Upgrade $http_upgrade;
                    proxy_set_header Connection "upgrade";
                    proxy_read_timeout 86400;
            }
    }
  • 相关阅读:
    浏览器控制台获取百度文库文章内容
    使用python登录CNZZ访问量统计网站,然后获取相应的数据
    使用Python登录腾讯MTA数据分析平台,然后获取相关数据
    使用python读写excel
    python将json转csv
    TCP/IP协议
    PHP smarty
    PHP入门及面向对象
    PHP概览
    PHP整体概览
  • 原文地址:https://www.cnblogs.com/xbblogs/p/8516192.html
Copyright © 2011-2022 走看看