• FRP内网穿透与Nginx结合,实现多子域名转发服务(四级子域名)


    0.环境准备

    • 已备案的域名1个
    • 带公网ip的云服务器1台
    • 本地pc一个(待穿透)
    • frp-0.30.0 的frps (github自行下载)
    • nginx

    1. 云服务器上安装Frp

    #下载
    wget https://github.com/fatedier/frp/releases/download/v0.20.0/frp_0.20.0_linux_amd64.tar.gz 
    
    #解压
    tar -zxvf frp_0.20.0_linux_amd64.tar.gz
    
    #修改frps(frp server 服务端)
    vi frps.ini
    >>>
    
    [common]
    #绑定端口
    bind_port = 7000
    # frpc Client客户端连接Frps服务端时的token 为了安全 建议添加
    token = admin
    
    # web端管理控制面板相关配置
    dashboard_port = 7500
    dashboard_user = admin
    dashboard_pwd = admin
    
    #需要穿透http的统一访问端口(http类型的内网穿透,必须设置vhost_http_port,并且所有的http类型的客户端都将通过同一个vhost_http_port访问。)
    vhost_http_port = 7001
    #https的访问端口(如果需要的话)
    #vhost_https_port = 7443
    
    # 三级frp域名 四级sub子域名做saas
    # 如果 frps 配置了 subdomain_host,则frpc中想自定义custom_domains 中不能是属于 subdomain_host 的子域名或者泛域名。
    subdomain_host = frp.xxx.com
    <<<
    
    #启动服务端
    #1.非后台运行
    ./frps -c ./frps.ini
    #2.后台运行
    nohup ./frps -c frps.ini & > frp.log
    
    #查看启动成功
    netstat -anp |grep frp
    

    2. 云服务提供商控制台 DNS域名解析配置

    需要解析共两条A记录:

    frp.xxx.com 和 *.frp.xxx.com

    例:

    记录值 记录类型(A类型) ip地址
    frp A ip地址
    *.frp A ip地址

    都指向你的云服务器ip,稍等一会ping frp.xxx.com,如果能ping通说明解析成功

    3. 配置Frpc Client客户端

    穿透机器/本地pc 解压包

    修改frpc.ini

    >>>
    #frps公共服务端配置
    [common]
    # 公网ip,frps所在的服务器的ip
    server_addr = xxx.xxx.xxx.xxx
    # frps服务端连接端口
    server_port = 7000
    # 连接token,与frps中的token一致
    token = admin
    
    # 定义第一个转发
    [web01]
    type = http
    # 本地(内网)服务的端口
    local_port = 8001
    # 与frps中的subdomain_host连接起来就是pc1.frp.xxx.com
    subdomain = pc1
    
    # 定义第二个转发
    [web02]
    type = http
    # 本地(内网)服务的端口
    local_port = 8002
    # 与frps中的subdomain_host连接起来完整访问地址就是pc.frp.xxx.com
    subdomain = pc
    <<<
    
    • PC cmd运行:frpc.exe -c frpc.ini

    2种访问方式:

    1. 一种纯域名,nginx做好做三级域名四级泛域名及反向代理,直接访问

      http://pc1.frp.xxx.com

      http://pc2.frp.xxx.com

    2. 一种sub域名+穿透端口号(vhost_http_port),nginx无需做三级域名四级泛域名配置

      http://pc1.frp.xxx.com:7001

      http://pc2.frp.xxx.com:7001

    4. 配置nginx,实现第一种访问方式

    server {
    	# 监听nginx 80端口
    	listen 80;
    	# 域名配置 记得一定要加上*.frp.xxx.com +  frp.xxx.com这个,只加frp.xxx.com是不行的,无法支持泛域名做sub模式
    	server_name *.frp.xxx.com frp.xxx.com;
    	location / {
    		proxy_pass http: //127.0.0.1:7001;
    		# 这个Host的header一定要加,不然转发后frp拿不到通过哪个域名访问的,导致转发失败
    		proxy_set_header   Host             $host;
    		proxy_set_header   X-Real-IP        $remote_addr;
    		proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    	}
    }
    
    • nginx重新刷新加载配置 ./nginx -s reload
  • 相关阅读:
    AndroidUI组件之ListView小技巧
    iframe属性參数
    Applet 数字签名技术全然攻略
    SoftReference
    递归算法浅谈
    VS2010 打包生成exe文件后 执行安装文件出现 TODO:&lt;文件说明&gt;已停止工作并已关闭
    创建新的Cocos2dx 3.0项目并解决一些编译问题
    ORACLE触发器具体解释
    SRM 624 D2L3: GameOfSegments, 博弈论,Sprague–Grundy theorem,Nimber
    cidaemon.exe进程cpu占用率高及关闭cidaemon.exe进程方法
  • 原文地址:https://www.cnblogs.com/Zzang/p/14845578.html
Copyright © 2020-2023  润新知