• frp 实现 http / tcp 内网穿透(穿透 wordpress )



    同步发布在个人笔记frp 实现 http / tcp 内网穿透(穿透 wordpress )

    1. 背景简介与软件安装

    前面有笔记记录了我们内网穿透的方案:

    服务内网端口公网服务器 ip期望实现的公网端口
    http 网页应用80domain.com8080
    ftp 文件服务器90domain.com9090
    公网服务器 domain.com
    内网服务器
    ssh / frp
    ssh / frp
    port: 81
    nginx 服务1
    port: 8080
    port: 91
    ngixn 服务2
    port: 9090
    http 网页应用
    port:80
    ftp 文件服务器
    port:90
    用户

    frp 工具实现的是内网服务器与公网服务器之间的通信,它由两部分组成,分别是服务端 frps客户端 frpc,服务端 frps 布置在公网服务器上,客户端 frpc 布置在内网服务器上,信息流近似如下(对于我们的方案,nginx 也可以视为“用户”):

    访问申请
    传递申请
    返回服务
    传递服务
    用户/nginx
    公网服务器: frps 服务端
    内网服务器: frpc 服务端

    frp 安装推荐从 github 下载:frp_release
    要注意,不同版本的 frp 配置文件写法不同,老一些的版本使用的 ini 配置文件,新一些的版本使用的toml格式,推荐大家配置前阅读一下官方的文档frp文档
    下载下来后解压获得可运行的二进制文件frpsfrpc,分别拷贝到公网服务器和内网服务器就算安装好了。具体的放置位置与配置文件编写,下面详细记录。

    2. 服务端配置

    2.1 配置文件

    推荐安装位置在公网服务器/usr/local/etc/frp,当然你也可以安装在自己喜欢的地方,下面把路径用server_path/代替。把frps文件放在路径下,然后在路径下新建配置文件frps.toml
    server_path/frps.toml

    bindPort = 6666			# frps 用来与客户端通信的端口
    
    vhostHTTPPort = 81		# 穿透的http服务的暴露端口
    #vhostHTTPSPort = 444	# 如果是https协议用这个字段
    
    auth.token = "your_token"	# 用来认证的令牌,frps和frpc要保持一致
    
    # Server Dashboard,可以查看frp服务状态以及统计信息的后台管理面板
    webServer.addr = "0.0.0.0" # 后台管理地址,就是服务器ip地址
    webServer.port = 7777 # 你可以自定义
    webServer.user = "user" # 后台登录用户名
    webServer.password = "your_password" # 后台登录密码
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    保存好后,可以通过命令运行:

    ./frps -c frps.toml
    
    • 1

    2.2 wordpress 配置文件

    如果要穿透的是 wordpress 服务,只有一点必须要注意,那就是vhostHTTPPort必须与内网上的 wordpress 端口保持一致,否则就会穿透失败。
    比如内网的 wordpress 服务在 192.168.1.2:6060,那么vhostHTTPPort 就必须设置为6060

    2.3 frps 自启动

    把服务注册为系统服务,并实现开机自启动。
    /etc/systemd/system/路径下新建文件frps.service
    /etc/systemd/system/frps.service

    [Unit]
    Description=Frp Server Service
    After=network.target
    
    [Service]
    Type=simple
    User=nobody
    Restart=on-failure
    RestartSec=5s
    ExecStart=server_path/frps -c server_path/frps.toml
    
    [Install]
    WantedBy=multi-user.target
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    然后终端运行systemctl enable frps.service就把服务注册为开机自启动了,后面就可以用systemctl 的方式管理了。
    这时候浏览器访问公网服务器ip:7777,输入设置的用户密码,就能进入 frps 的后台管理界面了。
    在这里插入图片描述

    3.客户端配置

    3.1 配置文件

    推荐安装位置在公网服务器/usr/local/etc/frp,当然你也可以安装在自己喜欢的地方,下面把路径用client_path/代替。把frpc文件放在路径下,然后在路径下新建配置文件frpc.toml
    client_path/frpc.toml

    serverAddr = "xx.xx.xx.xx"	# 公网服务器ip
    serverPort = 6666			# 公网服务器frps配置的通道端口
    
    auth.token = "your_token" 	# 与frps配置的令牌相同
    
    # http 穿透服务
    [[proxies]]
    name = "http-1"		# 要为每个服务起一个专属的名字,不能重复
    type = "http"		# 选择穿透协议
    localPort = 80	# 本地服务的端口
    customDomains = ["domain.com"]	# 注意此处是必填项,后面访问服务也必须使用这个域名,用ip等别的方式是不能访问服务的;如果此处填的是ip,则也只能通过ip来访问。
    # ftp 穿透服务
    [[proxies]]
    name = "ftp-1"
    type = "tcp"		# 选择tcp协议
    localPort = 90		#内网ftp端口
    remotePort = 91		#frps的映射端口
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    保存好后,可以通过命令运行:

    ./frpc -c frpc.toml
    
    • 1

    此时内网穿透就已经配置好了,可以登录 frps 的后台查看服务情况。也可以和服务端一样,把客户端也注册为自启动服务。

    3.2 frpc 自启动

    把服务注册为系统服务,并实现开机自启动。
    /etc/systemd/system/路径下新建文件frpc.service
    /etc/systemd/system/frps.service

    [Unit]
    Description=Frp Server Service
    After=network.target
    
    [Service]
    Type=simple
    User=nobody
    Restart=on-failure
    RestartSec=5s
    ExecStart=client_path/frpc -c clientr_path/frpc.toml
    
    [Install]
    WantedBy=multi-user.target
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    然后终端运行systemctl enable frpc.service就把服务注册为开机自启动了,后面就可以用systemctl 的方式管理了。

  • 相关阅读:
    【SpringCloud】认识微服务、服务拆分以及远程调用
    45-1 waf绕过 - 文件上传绕过WAF方法
    C++ PrimerPlus 复习 第四章 复合类型(上)
    vue3 PC端项目构建TS,vue3+ant+vite+axios+pinia+sass+typescript
    el-data-picker限制日期可选范围
    hbase学习01(hbase入门及hbase shell简单操作)
    【微客云】外卖霸王餐-城市分站加盟-区域代理-服务商模式
    【ffmpeg】音频编码原理
    Git操作笔记
    谷歌与OpenAI合作,用Google Search为大模型刷新!
  • 原文地址:https://blog.csdn.net/Lichen0196/article/details/137974723