# 服务端配置

  1. 下载

    下载地址

  2. 解压

    1. tar -zxvf frp_0.60.0_linux_amd64.tar.gz
  3. 进入解压目录并打开配置文件

    1. vim frps.toml
    2. 修改内容如下
    bindPort = 7000
    # 看板
    webServer.addr = "0.0.0.0"
    webServer.port = 7500
    webServer.user = "admin"
    webServer.password = "admin"
    # 加入 http 支持
    vhostHTTPPort = 8080
    # 设置加密
    auth.method = "token"
    auth.token = "123456"
    # 主域名 - 不推荐 - 因为配置 nginx 后仍然需要加本地映射端口才能访问
    # 如果不加主域名,直接 fprc 映射,nginx 反而可以 80 端口直接访问
    subDomainHost = "yourdomain.top"
  4. 设置和启动 frp 服务

    sudo mkdir -p /etc/frp
    sudo cp frps.toml /etc/frp
    sudo cp frps /usr/bin
    # v2 版本没有这个文件需要自己创建
    sudo cp frps.service /usr/lib/systemd/system/
    sudo systemctl enable frps
    sudo systemctl start frps
  5. 防火墙开放端口 (云服务器是外部开启)

    # 添加监听端口
    sudo firewall-cmd --permanent --add-port=7000/tcp
    # 添加管理后台端口
    sudo firewall-cmd --permanent --add-port=7500/tcp
    sudo firewall-cmd --reload

# 客户端配置

  1. 步骤 1,2 与服务端相同

  2. 进入解压目录并打开配置文件

    1. vim frpc.toml
    serverAddr = "x.x.x.x"
    serverPort = 7000
    auth.method = "token"
    auth.token = "123456"
    # 看板
    webServer.addr = "127.0.0.1"
    webServer.port = 7400
    webServer.user = "admin"
    webServer.password = "admin"
    # 基础配置
    [[proxies]]
    name = "test-tcp"
    type = "tcp"
    localIP = "127.0.0.1"
    localPort = 8091
    remotePort = 7100
    # http 配置
    # 如果 frps 配置主域名则只需要写前缀,此时只需写入 test
    [[proxies]]
    name = "web"
    type = "http"
    localPort = 8080
    customDomains = ["test.yourdomain.top"]
  3. 防火墙开放端口

    sudo firewall-cmd --permanent --add-port=7400/tcp
    sudo firewall-cmd --permanent --add-port=8091/tcp
    sudo firewall-cmd --reload
  4. 客户端启动

    1. ./frpc -c frpc.toml

# 新特性

# 支持子文件

引入了类似 nginx 的 include,可以包含子文件

# frpc.toml
serverAddr = "x.x.x.x"
serverPort = 7000
includes = ["./confd/*.toml"]

子文件

# ./confd/test.toml
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000

如果更改子文件配置,记得使用 reload 进行重新加载

frpc reload -c frpc.tomlsystemctl reload frpc

重载后记得查看是否出现 reload success 没有出现则说明配置出问题了。

# 支持 web 端动态在线配置、热更新配置功能

需要在配置中先加入控制面板

# 如果需要开放外网访问改为 0.0.0.0 并添加映射端口配置
webServer.addr = "127.0.0.1"
webServer.port = 7400
webServer.user = "admin"
webServer.password = "admin"

在配置界面修改完成后,点击 upload 上传即可进行重新加载并写入文件

目前没有找到查看子文件配置的方法

# 域名映射的 nginx 配置

server {
     listen      80;
     server_name test.yourdomain.top;
     location / {
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_redirect http://$host/ http://$http_host/;
         proxy_pass http://localhost:8080;
     }
 }

# systemd 配置

# 服务端

文件名 frps.service

[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=idle
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/bin/frps -c /etc/frp/frps.toml
ExecReload=/usr/bin/frps reload -c /etc/frp/frps.toml
[Install]
WantedBy=multi-user.target

# 客户端

文件名 frpc.service

[Unit]
Description=Frp Client Service
After=network.target
[Service]
Type=idle
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/bin/frpc -c /etc/frp/frpc.toml
ExecReload=/usr/bin/frpc reload -c /etc/frp/frpc.toml
[Install]
WantedBy=multi-user.target

如果你有多个服务器,或者不想采用子文件配置,可以采用旧版方案,进行多个 systemd 进行管理,配置如下:

文件名 frpc@.service

[Unit]
Description=Frp Client Service
After=network.target
[Service]
Type=idle
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/bin/frpc -c /etc/frp/%i.toml
ExecReload=/usr/bin/frpc reload -c /etc/frp/%i.toml
[Install]
WantedBy=multi-user.target

其中 % i 代表配置文件名 <name>,使用方法如下:

systemctl start frpc@<name1>
systemctl start frpc@<name2>
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

obsidianlyg 微信支付

微信支付