当前位置: 首页 > article >正文

新版frp-0.61.0 实现泛解析域名穿透 以及 https启用

需要在公网服务器的域名解析平台 泛域名 *.aa.com 解析到frp 公网服务器的ip x.x.x.x

对于frpc.toml 文件的 serverAddr 绑定的ip 需要公网服务器放行 bindPort 对于的端口

frpc.toml serverPort  对于的的是 frps.toml bindPort 端口

frps.toml

bindPort = 7000
vhostHTTPPort = 80
vhostHTTPSPort = 443
frppath="/data/frp/frp_0.61.0_linux_amd64"

port=7000

fprsStart(){
    
    if [ -d ${frppath} ];
    then
        echo ""
    else
        echo "${frppath}目录不存在"
        exit
    fi
    
    echo "进入${frppath}目录"

    cd ${frppath}
    
    nohup ./frps -c ./frps.toml > frps.log 2>&1 &
    
    exit
}

fprsStop(){
    #根据端口号查询对应的pid
    pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }');

    #杀掉对应的进程,如果pid不存在,则不执行
    if [  -n  "$pid"  ]
    then
        kill  -9  $pid;
        echo "${port}端口对应的进程号${pid}被杀死"
    else
        echo "${port}端口未启动"
    fi
}

frpReStart(){
    
    fprsStop
    
    sleep 2s
    
    fprsStart
    
}

commport(){
    #根据端口号查询对应的pid
    pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }');

    #杀掉对应的进程,如果pid不存在,则不执行
    if [  -n  "$pid"  ]
    then
        echo "${port}端口对应的进程号${pid}"
    else
        echo "${port}端口未启动"
    fi
}

sele(){
    commport
}

helpTxt(){
    echo "-----------------------------"
    echo "      start     启动frps        "
    echo "      stop      关闭frps        "
    echo "      restart   重启frps        "
    # echo "      2      启动frpc        "
    # echo "      3      关闭frpc        "
    echo "      sele      端口运行情况        "
    # echo "      exit   退出        "
    echo "-----------------------------"
}


case "$1" in
    "start")
    fprsStart
    ;;
    "stop")
    fprsStop
    ;;
    "restart")
    frpReStart
    ;;
    "sele")
    sele
    ;;    
    *)
    helpTxt
    ;;
esac

内网机器的nginx配置ssl证书,至于ssl证书自己去搞,宝塔获取也好,免费的也好,很好弄的

server {
    # 服务器端口使用443,开启ssl, 这里ssl就是上面安装的ssl模块
    listen       443 ssl;
    # 域名,多个以空格分开
    server_name  *.aa.com;
    
    # ssl证书地址
    ssl_certificate     /usr/local/nginx/cert/ssl.pem;  # pem文件的路径
    ssl_certificate_key  /usr/local/nginx/cert/ssl.key; # key文件的路径
    
    # ssl验证相关配置
    ssl_session_timeout  5m;    #缓存有效期
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;    #加密算法
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    #安全链接可选的加密协议
    ssl_prefer_server_ciphers on;   #使用服务器端的首选算法

    location / {
        root   html;
        index  index.html index.htm;
    }
}

https 最重要的是

[[proxies]]
name = "nginx"
type = "https"
localIP = "192.168.1.33"
localPort = 443
customDomains = ["*.aa.com"]

frpc.toml

serverAddr = "x.x.x.x"
serverPort = 7000

webServer.addr = "0.0.0.0"
webServer.port = 7000
webServer.user = "admin"
webServer.password = "admin"


[[proxies]]
name = "web"
type = "http"
localIP = "192.168.1.34"
localPort = 9100
customDomains = ["mqtt.aa.com"]

[[proxies]]
name = "mqtt"
type = "tcp"
localIP = "192.168.1.33"
localPort = 1883
remotePort = 1883

[[proxies]]
name = "nginx"
type = "https"
localIP = "192.168.1.33"
localPort = 443
customDomains = ["*.aa.com"]
frppath="/data/frp/frp_0.61.0_linux_amd64"

port=7000

fprsStart(){
    
    if [ -d ${frppath} ];
    then
        echo ""
    else
        echo "${frppath}目录不存在"
        exit
    fi
    
    echo "进入${frppath}目录"

    cd ${frppath}
    
    nohup ./frpc -c ./frpc.toml > frpc.log 2>&1 &

    exit
}

fprsStop(){
    #根据端口号查询对应的pid
    pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }');

    #杀掉对应的进程,如果pid不存在,则不执行
    if [  -n  "$pid"  ]
    then
        kill  -9  $pid;
        echo "${port}端口对应的进程号${pid}被杀死"
    else
        echo "${port}端口未启动"
    fi
}

frpReStart(){
    
    fprsStop
    
    sleep 2s
    
    fprsStart
    
}

commport(){
    #根据端口号查询对应的pid
    pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }');

    #杀掉对应的进程,如果pid不存在,则不执行
    if [  -n  "$pid"  ]
    then
        echo "${port}端口对应的进程号${pid}"
    else
        echo "${port}端口未启动"
    fi
}

sele(){
    commport
}

helpTxt(){
    echo "-----------------------------"
    echo "      start     启动frps        "
    echo "      stop      关闭frps        "
    echo "      restart   重启frps        "
    # echo "      2      启动frpc        "
    # echo "      3      关闭frpc        "
    echo "      sele      端口运行情况        "
    # echo "      exit   退出        "
    echo "-----------------------------"
}


case "$1" in
    "start")
    fprsStart
    ;;
    "stop")
    fprsStop
    ;;
    "restart")
    frpReStart
    ;;
    "sele")
    sele
    ;;    
    *)
    helpTxt
    ;;
esac


# while :
#     do  
#         #键盘录入数据
#         helpTxt
#         echo "请输入指令" 
#         read meath
#         case ${meath} in
#             "0") 
#             fprsStart exit
#             ;;
#             "1") 
#             fprsStop exit
#             ;;
#             "4") 
#             sele exit
#             ;;
#             "5") 
#             helpTxt exit
#             ;;
#             "exit") 
#             echo "程序结束!"
#             break
#             ;;
#             *) 
#             echo "你输入的是'${meath}'不在范围内" 
#             continue
#             ;;
#         esac
# done


# #键盘录入数据
# read meath
# case "$meath" in
#     "0") 
#     fprsStart exit
#     ;;
#     "1") 
#     fprsStop exit
#     ;;
#     "4") 
#     sele exit
#     ;;
#     "5") 
#     helpTxt exit
#     ;;
#     *) helpTxt exit
#     ;;
# esac


http://www.kler.cn/a/599803.html

相关文章:

  • vue3 项目的最新eslint9 + prettier 配置
  • 数据库联表Sql语句建一个新表(MySQL,Postgresql,SQL server)
  • OpenHarmony和HarmonyOS到底有什么区别?
  • 【GL010】C++
  • 哨兵-6 (Sentinel-6)
  • VSCode 出现一直Reactivating terminals,怎么破
  • 数据结构每日一题day1
  • docker模拟Dos_SYN Flood拒绝服务攻击 (Ubuntu20.04)
  • uniapp处理流式请求
  • PLY格式文件如何转换成3DTiles格式——使用GISBox软件实现高效转换
  • [深度学习]特征提取和无监督
  • 精通服务器推送事件(SSE)与 Python 和 Go 实现实时数据流 [特殊字符]
  • Qt6相对Qt5的主要提升(AI总结)
  • systemd-networkd 的 *.network 配置文件中的 [Network] 和 [Address] 中的 Address 有个什么区别?
  • 华为HCIE方向那么多应该如何选择?
  • CSS3学习教程,从入门到精通,CSS3 元素的浮动与定位语法知识点及案例代码(17)
  • mysql部署错误
  • ubuntu网络问题
  • 【蓝桥杯】4535勇闯魔堡(多源BFS + 二分)
  • HTML云原生:概念、技术与应用的全面解析