• frp内网穿透并搭建多个域名同时映射


    官方项目地址:https://github.com/fatedier/frp
    Centos安装脚本
    下载

    yum install -y wget && wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz

    解压

    tar -xvf frp_0.38.0_linux_amd64.tar.gz 

    移动至/usr/local

    mkdir /usr/local/frp
    mv frp_0.38.0_linux_amd64/* /usr/local/frp/


    文件说明

    frps.ini: 服务端配置文件
    frps: 服务端软件
    frpc.ini: 客户端配置文件
    frpc: 客户端软件


    配置systemctl来控制,服务端运行
    vim新建文件并写入配置内容   如果vim没有安装:当前系统版本为centos可以利用“yum -y install vim*”命令安装vim。

    vim /usr/lib/systemd/system/frp.service

    写入以下内容,注意上文移动放置的路径和此处有关。这里是启动的服务端。

    [Unit]
    Description=The nginx HTTP and reverse proxy server
    After=network.target remote-fs.target nss-lookup.target

    [Service]
    Type=simple
    ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini
    KillSignal=SIGQUIT
    TimeoutStopSec=5
    KillMode=process
    PrivateTmp=true
    StandardOutput=syslog
    StandardError=inherit

    [Install]
    WantedBy=multi-user.target


    重新加载服务的配置文件

    systemctl daemon-reload

    现在就可以用 systemctl 套装来控制 frp 了。

    启动/停止/重启,查看状态,设置开机自启/关闭开机自启

    systemctl start frp
    systemctl stop frp
    systemctl restart frp
    systemctl status frp
    systemctl enable frp
    systemctl disable frp

    配置和使用
    服务端
    frps.ini

    [common]
    # frp监听的端口,用作服务端和客户端通信
    bind_port = 7000
     
    # 服务端通过此端口接监听和接收公网用户的http请求
    vhost_http_port = 7071
     
    # frp提供了一个控制台,可以通过这个端口访问到控制台。可查看frp当前有多少代理连接以及对应的状态
    dashboard_port = 7500
     
     
    # 服务端的subdomain_host需要和客户端配置文件中的subdomain、local_port配合使用,
    # 可通过{subdomain}.{subdomain_host} 的域名格式来访问自己本地的 web 服务。
    # 假如服务端的subdomain_host为dev.msh.com,客户端某个配置组中的
    # subdomain为a,local_port为8585,
    # 则:
    # 访问 a.dev.msh.com ,等同于访问本地的localhost:8585
     
    subdomain_host = dev.msh.com

    启动frp服务端

    systemctl start frp && systemctl status frp


    nginx反向代理配置
    (关于如何安装nginx就不过多赘述,详细安装教程请参考 Nginx Linux详细安装部署教程)

    修改 nginx.conf 文件

      # frp的接收http请求的反向代理
        server {
            listen 80;
            server_name *.dev.msh.com  dev.msh.com;
            
            location / {
                # 7071端口即为frp监听的http端口
                proxy_pass http://127.0.0.1:7071; 
                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_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                
                proxy_connect_timeout 7d;
                proxy_send_timeout 7d;
                proxy_read_timeout 7d;
     
                }
            # 防止爬虫抓取
            if ($http_user_agent ~* "360Spider|JikeSpider|Spider|spider|bot|Bot|2345Explorer|curl|wget|webZIP|qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot|NSPlayer|bingbot")
                {
                    return 403;
                }
        }

    让nginx重新加载配置文件


    开启防火墙端口  ==> 已开启的话可以忽略


    # 开启防火墙端口   7000端口和7071端口即为上面配置的bind_port和vhost_http_port端口
    firewall-cmd --zone=public --add-port=7000/tcp --permanent
    firewall-cmd --zone=public --add-port=7071/tcp --permanent
     
    # 开启后重启防火墙,使得刚刚的修改生效
    firewall-cmd --reload


    客户端安装配置
     frpc.ini 文件

    [common]
    # 部署frp服务端的公网服务器的ip
    server_addr = 132.232.64.79
    # 和服务端的bind_port保持一致
    server_port = 7000
     
     
    # 代理服务一 ,[]内的代理服务名称在全局范围内确保唯一,每个人的每个代理服务不能重名,
    # 否则会影响正常使用。
     [http-a]
    type = http
    # local_port代表你想要暴露给外网的本地web服务端口
    local_port = 8585
    # subdomain 在全局范围内要确保唯一,每个代理服务的subdomain不能重名,否则会影响正常使用。
    # 客户端的subdomain需和服务端的subdomain_host配合使用
    subdomain = a

    # 代理服务二  ,各项配置说明请参考配置组一
    [http-b]
    type = http
    local_port = 8686
    subdomain = b


    客户端 windows
    在frp解压目录下右键打开 powershell 或者cmd,执行如下命令


     ./frpc.exe -c .\frpc.ini   如果这个执行不了  

    frpc.exe -c frpc.ini   这样输入直接回车


    利用脚本一键开启隐藏CMD窗口,在任何一个目录下新建一个文本文件并将其重命名为“frpc.bat”,编辑,粘贴如下内容并保存。  C:\frp 是frp的存放目录


    @echo off
    if "%1" == "h" goto begin
    mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
    :begin
    REM
    cd C:\frp
    frpc -c frpc.ini
    exit
               

  • 相关阅读:
    JS/TS项目里的Module都是什么?
    网络基础(HTTP协议)
    用AI把你的故事变成歌曲,创作一首只属于你的歌
    3.2队列
    Docker 搭建 apache2 + php8 + MySQL8 环境
    一个引发openssl崩溃问题案例
    树与二叉树
    01. Docker的基本介绍
    Java毕业设计之spring boot疫情数据查看系统-课设大作业
    OceanBase 4.0 三节点生产环境部署两三事
  • 原文地址:https://blog.csdn.net/weixin_43166518/article/details/126175611