我的日常开发记录日志
首页
  • Laravel
  • Thinkphp
  • Swoole
  • Workman
  • php
  • HTML
  • CSS
  • JavaScript
  • Vue
  • ES6
  • 小程序
  • Mysql
  • Redis
  • Es
  • MongoDb
  • Git
  • Composer
  • Linux
  • Nginx
  • Docker
  • Vpn
  • 开发实战
  • 开发工具类
  • 友情链接
💖关于
💻收藏
  • 分类
  • 标签
  • 归档数据
GitHub (opens new window)

我的日常开发记录日志

never give up
首页
  • Laravel
  • Thinkphp
  • Swoole
  • Workman
  • php
  • HTML
  • CSS
  • JavaScript
  • Vue
  • ES6
  • 小程序
  • Mysql
  • Redis
  • Es
  • MongoDb
  • Git
  • Composer
  • Linux
  • Nginx
  • Docker
  • Vpn
  • 开发实战
  • 开发工具类
  • 友情链接
💖关于
💻收藏
  • 分类
  • 标签
  • 归档数据
GitHub (opens new window)
  • git

  • composer

  • linux

  • nginx

  • docker

  • vpn

  • frp

    • 安装
    • ssl访问
    • linux上安装frp客户端
      • 一、服务端安装与配置
        • 1. 环境要求
        • 2. 自动化安装脚本
        • 3. 关键配置说明
      • 二、客户端配置示例
        • 快速安装脚本
        • 1. 基础配置文件 (frpc.ini)
        • 2. 客户端管理命令
      • 三、Nginx反向代理配置
        • 1. 基础代理配置
        • 2. HTTPS增强配置
      • 四、DNS泛解析配置
        • 1. DNS记录设置
        • 2. 本地测试方法
      • 五、安全加固建议
      • 六、故障排查指南
        • 常见问题处理表
        • 日志查看命令
      • 七、性能优化建议
      • 八、扩展应用场景
        • 1. 远程开发环境
        • 2. 数据库穿透
        • 3. 文件共享服务
      • 九、版本更新策略
  • 脚本

  • 硬件

  • 运维
  • frp
窝窝侠
2025-02-05

linux上安装frp客户端

# 全栈Frps内网穿透部署指南

# 一、服务端安装与配置

# 1. 环境要求

  • Linux服务器(建议Ubuntu 20.04+ / CentOS 7+)
  • 开放端口:7000(控制端口)、7071(HTTP)、7500(仪表盘)
  • Root权限

# 2. 自动化安装脚本

#!/bin/bash

version="0.52.3"
arch="amd64"  # 可选 amd64/arm64/arm

# 检查root权限
[ "$(id -u)" != "0" ] && echo "请使用sudo执行" && exit 1

# 下载解压
wget -q https://github.com/fatedier/frp/releases/download/v${version}/frp_${version}_linux_${arch}.tar.gz || exit 1
tar xzf frp_${version}_linux_${arch}.tar.gz || exit 1

# 安装核心文件
cd frp_${version}_linux_${arch}
sudo mv frps /usr/local/bin/

# 生成配置文件
sudo mkdir -p /etc/frp
sudo tee /etc/frp/frps.ini > /dev/null <<EOF
[common]
bind_port = 7000
vhost_http_port = 7071
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
subdomain_host = dev.msh.com
token = your_secure_token_here
EOF

# 创建Systemd服务
sudo tee /etc/systemd/system/frps.service > /dev/null <<EOF
[Unit]
Description=Frp Server Service
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/frps -c /etc/frp/frps.ini
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target
EOF

# 启动服务
sudo systemctl daemon-reload
sudo systemctl enable --now frps

echo "安装完成!访问仪表盘:http://服务器IP:7500"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

# 3. 关键配置说明

配置项 说明 建议值
bind_port 客户端连接端口 7000
vhost_http_port HTTP代理端口 7071
dashboard_port 监控面板端口 7500
subdomain_host 子域名根域名 根据实际需求设置
token 安全验证令牌(必须修改) 高强度随机字符串

# 二、客户端配置示例

# 快速安装脚本

#!/bin/bash

# 设置参数
FRPC_VERSION="0.52.3"
ARCH="amd64"  # 可选 amd64/arm64/arm
SERVER_IP="your_server_ip"  # 替换为实际服务器IP
TOKEN="your_secure_token"    # 与服务端token一致

# 自动安装流程
wget -q https://github.com/fatedier/frp/releases/download/v${FRPC_VERSION}/frp_${FRPC_VERSION}_linux_${ARCH}.tar.gz
tar xzf frp_${FRPC_VERSION}_linux_${ARCH}.tar.gz
cd frp_${FRPC_VERSION}_linux_${ARCH}

# 安装二进制文件
sudo mv frpc /usr/local/bin/
sudo mkdir -p /etc/frp

# 生成配置文件
sudo tee /etc/frp/frpc.ini > /dev/null <<EOF
[common]
server_addr = ${SERVER_IP}
server_port = 7000
token = ${TOKEN}

[ssh]  # SSH示例配置
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
EOF

# 创建系统服务
sudo tee /etc/systemd/system/frpc.service > /dev/null <<EOF
[Unit]
Description=Frp Client Service
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/frpc -c /etc/frp/frpc.ini
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

# 启动服务
sudo systemctl daemon-reload
sudo systemctl enable --now frpc
echo "安装完成!使用 systemctl status frpc 查看状态"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/bin/bash
### BEGIN INIT INFO
# Provides:          frpc
# Required-Start:    $network $local_fs $remote_fs
# Required-Stop:     $network $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start frpc at boot time
# Description:       Enable frpc service.
### END INIT INFO

case "$1" in
  start)
    /usr/local/bin/frpc -c /etc/frpc.ini &
    ;;
  stop)
    pkill frpc
    ;;
  restart)
    pkill frpc
    /usr/local/bin/frpc -c /etc/frpc.ini &
    ;;
  *)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
    ;;
esac

#赋予脚本可执行权限
sudo chmod +x /etc/init.d/frpc
#开机自启
sudo update-rc.d frpc defaults
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

# 1. 基础配置文件 (frpc.ini)


[common]
server_addr = your_server_ip  # frps服务器公网IP
server_port = 7000            # 与服务端bind_port一致
token = your_secure_token     # 必须与服务端token相同

# ---------------------------
# 应用配置示例(按需添加)
# ---------------------------

# SSH穿透
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000  # 通过服务器6000端口访问

# HTTP网站穿透
[web]
type = http
local_port = 80
subdomain = test  # 访问 test.dev.msh.com (需服务端配置subdomain_host)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 2. 客户端管理命令

# 前台启动(调试模式)
frpc -c /etc/frp/frpc.ini

# 后台服务管理
sudo systemctl start frpc	启动客户端
sudo systemctl stop frpc	停止服务
sudo systemctl restart frpc	重启服务
journalctl -u frpc -f	查看实时日志
systemctl status frpc	检查运行状态
sudo journalctl -u frpc -f  # 查看实时日志
1
2
3
4
5
6
7
8
9
10

# 三、Nginx反向代理配置

# 1. 基础代理配置

server {
    listen 80;
    server_name *.dev.msh.com;
    
    access_log /var/log/nginx/frp.access.log;
    error_log /var/log/nginx/frp.error.log;

    location / {
        proxy_pass http://127.0.0.1:7071;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        
        # WebSocket支持
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 2. HTTPS增强配置

# 使用Certbot获取SSL证书
sudo certbot --nginx \
  -d "*.dev.msh.com" \
  -d "dev.msh.com" \
  --email admin@example.com \
  --agree-tos \
  --no-eff-email

# 自动续期配置
sudo crontab -e
# 添加以下内容
0 3 * * * /usr/bin/certbot renew --quiet
1
2
3
4
5
6
7
8
9
10
11
12

# 四、DNS泛解析配置

# 1. DNS记录设置

记录类型 主机记录 记录值 TTL
A * 服务器IP 600
A dev 服务器IP 3600

# 2. 本地测试方法

# 临时修改hosts文件(Linux/Mac)
echo "服务器IP test.dev.msh.com" | sudo tee -a /etc/hosts
1
2

# 五、安全加固建议

  1. Token保护

    • 使用长度超过16位的复杂字符串
    • 定期更换访问令牌
  2. 仪表盘防护

    # frps.ini
    [common]
    dashboard_user = admin_prod
    dashboard_pwd = StrongPassword@2023
    
    1
    2
    3
    4
  3. 防火墙策略

    # 仅允许必要端口
    sudo ufw allow 80,443,7000/tcp
    sudo ufw enable
    
    1
    2
    3
  4. 访问控制

    # Nginx IP白名单
    allow 192.168.1.0/24;
    allow 203.0.113.5;
    deny all;
    
    1
    2
    3
    4

# 六、故障排查指南

# 常见问题处理表

现象 排查步骤 解决方案
客户端连接超时 1. 检查服务器防火墙
2. 确认token匹配
开放对应端口
同步token配置
域名访问502错误 1. 检查frps运行状态
2. 验证Nginx代理配置
重启frps服务
检查proxy_pass设置
仪表盘无法访问 1. 确认dashboard_port开放
2. 检查账号密码
配置防火墙规则
重置登录凭证
HTTPS证书不生效 1. 检查DNS解析
2. 验证证书路径
等待DNS生效
重新申请证书

# 日志查看命令

# 服务端日志
sudo journalctl -u frps -f --since "5 minutes ago"

# 客户端日志
tail -f /var/log/frpc.log

# Nginx访问日志
tail -f /var/log/nginx/frp.access.log
1
2
3
4
5
6
7
8

# 七、性能优化建议

  1. 连接数优化

    # frps.ini
    [common]
    max_pool_count = 50
    tcp_mux = true
    
    1
    2
    3
    4
  2. 资源监控

    # 实时监控
    watch -n 1 "netstat -an | grep 7000 | wc -l"
    
    # 连接数统计
    ss -s | grep frps
    
    1
    2
    3
    4
    5
  3. 负载均衡方案

    # 客户端配置
    [web_cluster]
    type = http
    local_port = 8080
    subdomain = api
    health_check_type = http
    health_check_url = /status
    
    1
    2
    3
    4
    5
    6
    7

# 八、扩展应用场景

# 1. 远程开发环境

[vscode]
type = tcp
local_ip = 127.0.0.1
local_port = 8080
remote_port = 28080
1
2
3
4
5

# 2. 数据库穿透

[mysql]
type = tcp
local_ip = 127.0.0.1
local_port = 3306
remote_port = 3306
1
2
3
4
5

# 3. 文件共享服务

[file_server]
type = http
local_ip = 192.168.1.100
local_port = 8081
subdomain = files
1
2
3
4
5

# 九、版本更新策略

  1. 停止服务

    sudo systemctl stop frps
    
    1
  2. 备份配置

    cp /etc/frp/frps.ini ~/frps_backup.ini
    
    1
  3. 更新二进制文件

    wget https://github.com/fatedier/frp/releases/download/v新版本号/frp_新版本号_linux_架构.tar.gz
    tar xzf 新版本包.tar.gz
    sudo cp 新版本目录/frps /usr/local/bin/
    
    1
    2
    3
  4. 重启服务

    sudo systemctl start frps
    
    1
在线编辑 (opens new window)
上次更新: 2025/04/29, 14:13:12
ssl访问
jenkins部署代码

← ssl访问 jenkins部署代码→

最近更新
01
showprocess用法
04-29
02
vue3中尖括号和冒号的使用细则
04-29
03
sd使用
02-22
更多文章>
🖥️

© 2025窝窝侠 💌 豫ICP备20005263号-2 🛀 Theme by 💝 Vdoing && 小胖墩er

  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×