如何利用frp将本地服务映射到阿里云服务器上?

(FRP自建内网穿透)完全适配你的场景,核心是阿里云轻量云当FRP服务端、本地物理机当客户端,全程免费且可控。下面给你拆解「零出错」操作步骤,避开复杂配置:

一、先搞定阿里云轻量云(FRP服务端)

1. 开放关键端口(必须先做)

登录阿里云轻量云控制台 → 找到你的服务器 → 进入「安全组」→ 「入方向规则」→ 手动添加2条规则:

  • 规则1:端口范围填 7000/7000(FRP服务端通信端口),授权对象 0.0.0.0/0
  • 规则2:端口范围填 80/80(你的网站HTTP端口),授权对象 0.0.0.0/0
    保存后,服务端才能接收客户端连接和公网请求。

2. 安装FRP服务端(10秒复制命令)

用SSH工具(PuTTY、FinalShell)连接阿里云轻量云,依次执行以下命令(复制粘贴即可):

# 1. 下载FRP压缩包(Linux系统通用,若云服务器是Windows,留言告诉我)
wget https://github.com/fatedier/frp/releases/download/v0.50.0/frp_0.50.0_linux_amd64.tar.gz

# 2. 解压并进入文件夹
tar -zxvf frp_0.50.0_linux_amd64.tar.gz && cd frp_0.50.0_linux_amd64

# 3. 编辑服务端配置文件(仅保留关键配置)
sudo nano frps.ini

打开文件后,删除所有原有内容,粘贴以下3行:

[common]
bind_port = 7000  # FRP服务端固定通信端口
vhost_http_port = 80  # 网站对外的HTTP端口

Ctrl+O 保存,再按 Ctrl+X 退出。

3. 启动FRP服务端(后台稳定运行)

执行命令:

# 后台启动服务端,关闭SSH也不会断
nohup ./frps -c frps.ini &

执行后,若显示「nohup: ignoring input and appending output to ‘nohup.out’」,说明启动成功。

二、再配置本地物理机(FRP客户端)

1. 下载FRP客户端(按物理机系统选)

  • 若物理机是 Windows:下载链接 → frp_0.50.0_windows_amd64.zip,解压到桌面。
  • 若物理机是 Linux:执行和服务端一样的「下载+解压」命令。

2. 编辑客户端配置文件(只改3处)

找到解压后的文件夹,找到 frpc.ini 文件,用记事本(Windows)或文本编辑器(Linux)打开,删除原有内容,粘贴以下配置:

[common]
server_addr = 你的阿里云公网IP  # 替换成阿里云服务器的IP(如120.XX.XX.XX)
server_port = 7000  # 和服务端bind_port一致
token = 123456  # 自定义一个密码(如123456,后续若想更安全可修改)

[web]
type = http  # 服务类型(网站用HTTP)
local_ip = 你的物理机内网IP  # 替换成物理机的内网IP(如192.168.1.100,可在本地路由器查看)
local_port = 80  # 你物理机网站的端口(若网站用其他端口,改这里)

保存文件(Windows直接保存,Linux用 sudo nano frpc.ini 编辑后保存)。

3. 启动客户端(测试连接)

  • Windows物理机:打开「命令提示符」,cd到FRP解压文件夹(如 cd C:\Users\你的用户名\Desktop\frp_0.50.0_windows_amd64),执行:
    frpc.exe -c frpc.ini
  • Linux物理机:进入FRP文件夹,执行:
    ./frpc -c frpc.ini
    若显示「start proxy success」,说明客户端和阿里云服务端已连通!

三、测试访问(3秒验证)

用公网设备(手机开流量、非本地WiFi的电脑)打开浏览器,输入「你的阿里云公网IP」,就能直接访问本地物理机的网站了!

如果物理机是Windows系统,或不知道「物理机内网IP」怎么查,随时告诉我,我可以帮你生成定制化的FRP配置文件,你只需填自己的IP就能用,需要吗?

参考示例

根据你提供的信息(阿里云公网IP:8.141.120.82,本地物理机IP:192.168.2.23,网站端口:7071),我已为你生成即插即用的FRP配置文件,按以下步骤操作即可:

一、阿里云轻量云(FRP服务端)配置

1. 完善安全组(关键!)

登录阿里云控制台,在轻量云的「安全组」→「入方向规则」中,额外添加1条规则(之前已加7000和80,现在补这条):

  • 端口范围:7071/7071(你的网站端口,避免冲突)
  • 授权对象:0.0.0.0/0
    保存后,公网才能通过该端口访问。

2. 服务端配置文件(frps.ini

在阿里云FRP文件夹中,用nano frps.ini打开文件,替换为以下内容:

[common]
bind_port = 7000          # 服务端与客户端通信端口(固定)
vhost_http_port = 7071    # 对外提供访问的端口(和你的网站端口一致)
token = 123456            # 与客户端一致的密码(可自定义,建议保留)

Ctrl+O保存,Ctrl+X退出。

3. 启动服务端(后台运行)

在FRP文件夹中执行:

# 先停止之前的服务(若已启动)
pkill frps
# 后台启动新配置
nohup ./frps -c frps.ini &

执行后显示nohup: ignoring input...即成功。

二、本地物理机(FRP客户端)配置

(一)如果物理机是Windows系统

  1. 客户端配置文件(frpc.ini
    在FRP解压文件夹中,用记事本打开frpc.ini,替换为:
[common]
server_addr = 8.141.120.82  # 阿里云公网IP(你的服务器)
server_port = 7000          # 与服务端bind_port一致
token = 123456              # 与服务端密码一致

[web]
type = http                 # 网站服务类型
local_ip = 192.168.2.23     # 本地物理机内网IP
local_port = 7071           # 本地网站端口

保存文件。

  1. 启动客户端(测试+后台保活)
  • 临时测试:打开「命令提示符」,cd到FRP文件夹(如cd C:\frp),执行:

    frpc.exe -c frpc.ini

    若显示[web] start proxy success,说明连接成功。

  • 后台保活(避免关闭窗口后断开):
    创建一个启动.bat文件,内容为:

    @echo off
    start /b frpc.exe -c frpc.ini

    双击运行即可在后台常驻。

(二)如果物理机是Linux系统

  1. 客户端配置文件(frpc.ini
    在FRP文件夹中,执行nano frpc.ini,替换为:
[common]
server_addr = 8.141.120.82  # 阿里云公网IP
server_port = 7000          # 与服务端一致
token = 123456              # 密码一致

[web]
type = http
local_ip = 192.168.2.23
local_port = 7071

Ctrl+O保存,Ctrl+X退出。

  1. 启动客户端(后台运行)
    # 先停止之前的进程(若有)
    pkill frpc
    # 后台启动
    nohup ./frpc -c frpc.ini &

三、测试访问(100%成功验证)

用公网设备(手机开流量、非本地WiFi的电脑)打开浏览器,输入:
http://8.141.120.82:7071
即可直接访问你本地物理机的网站!

常见问题解决

  • 若访问失败,先检查:
    1. 阿里云安全组是否开放了70007071端口;
    2. 本地物理机防火墙是否允许7071端口(Windows可暂时关闭防火墙测试);
    3. 客户端启动日志是否有success字样(无错误信息)。

有任何报错,直接截图日志给我,我帮你1分钟定位问题~

如果本地有多个服务呢?

当本地服务器有多个服务(如多个网站、API服务)时,只需在FRP配置中为每个服务添加独立的「代理规则」,让阿里云轻量云通过不同端口或子域名区分不同服务,核心是“多服务共享一个FRP连接,各自配置转发规则”,具体操作如下:

一、核心原理

FRP支持在一个客户端配置多个「代理实例」,每个实例对应一个本地服务:

  • 方式1:不同端口区分(推荐,配置简单):阿里云用不同公网端口转发到本地不同服务的端口(如公网8081→本地服务1的7071,公网8082→本地服务2的7072)。
  • 方式2:子域名区分(需域名解析,更专业):绑定一个主域名(如yourdomain.com),用子域名(service1.yourdomain.comservice2.yourdomain.com)转发到不同本地服务。

二、实操步骤(以“2个本地服务”为例)

假设你有2个本地服务:

  • 服务1:网站,本地IP192.168.2.23,端口7071(之前的服务)。
  • 服务2:API服务,本地IP192.168.2.23,端口7072(新增服务)。

第一步:阿里云服务端(FRPS)配置(无需大改)

服务端只需确保「基础通信端口」和「对外端口范围」开放,无需为每个服务单独改配置:

  1. 开放阿里云安全组:新增一条规则,开放服务2对应的公网端口(如8082),规则如下:

    • 端口范围:8082/8082
    • 授权对象:0.0.0.0/0
      (若用子域名方式,只需开放80/443端口,无需额外开放端口)。
  2. 服务端配置文件(frps.ini) 保持不变(之前的配置已支持多客户端代理):

    [common]
    bind_port = 7000          # FRP基础通信端口(所有服务共享)
    vhost_http_port = 8081    # 服务1的公网端口(可选,也可在客户端指定)
    token = 123456            # 密码不变

第二步:本地客户端(FRPC)配置(核心:添加多代理规则)

在本地物理机的frpc.ini中,为每个服务添加一个独立的「代理块」(如[web1]对应服务1,[api1]对应服务2),示例如下:

方式1:不同端口区分(简单直接)
[common]
server_addr = 8.141.120.82  # 阿里云公网IP(所有服务共享)
server_port = 7000          # 与服务端bind_port一致
token = 123456              # 密码一致

# 服务1:网站(之前的配置,公网用8081端口)
[web1]
type = http                 # 服务类型(HTTP/HTTPS/TCP,根据服务定)
local_ip = 192.168.2.23     # 本地服务IP
local_port = 7071           # 本地服务端口
custom_domains = 8.141.120.82  # 阿里云IP(公网访问用:http://8.141.120.82:8081remote_port = 8081          # 阿里云对外端口(与安全组开放的一致)

# 服务2:API服务(新增,公网用8082端口)
[api1]
type = http
local_ip = 192.168.2.23
local_port = 7072           # 本地API服务端口
custom_domains = 8.141.120.82
remote_port = 8082          # 阿里云对外端口(与安全组开放的一致)
方式2:子域名区分(需域名,更优雅)

若你有域名(如yourdomain.com),先在域名解析平台(如阿里云DNS)添加2条A记录:

  • 子域名service1.yourdomain.com → 解析到阿里云IP8.141.120.82
  • 子域名service2.yourdomain.com → 解析到阿里云IP8.141.120.82

然后修改frpc.ini,用子域名区分服务(无需指定remote_port,默认用80端口):

[common]
server_addr = 8.141.120.82
server_port = 7000
token = 123456

# 服务1:子域名service1.yourdomain.com
[web1]
type = http
local_ip = 192.168.2.23
local_port = 7071
custom_domains = service1.yourdomain.com  # 子域名1

# 服务2:子域名service2.yourdomain.com
[api1]
type = http
local_ip = 192.168.2.23
local_port = 7072
custom_domains = service2.yourdomain.com  # 子域名2

第三步:重启FRP服务(客户端+服务端)

  1. 重启本地Windows服务(之前配置的FRP客户端服务):

    • 按下Win+R,输入services.msc,找到「FRP Client Service」,右键「重启」。
    • 若未配置服务,在命令提示符中重新执行:frpc.exe -c frpc.ini
  2. 重启阿里云服务端(确保配置生效):

    pkill frps  # 停止旧服务
    nohup ./frps -c frps.ini &  # 启动新服务

第四步:测试多服务访问

  • 方式1(端口区分):
    • 访问服务1:http://8.141.120.82:8081
    • 访问服务2:http://8.141.120.82:8082
  • 方式2(子域名区分):
    • 访问服务1:http://service1.yourdomain.com
    • 访问服务2:http://service2.yourdomain.com

三、多服务扩展注意事项

  1. 端口不冲突:阿里云安全组开放的公网端口、本地服务端口、FRP配置的remote_port都不能重复。
  2. 服务类型匹配:若本地服务是TCP(如数据库、远程桌面),将type = http改为type = tcp,其他配置逻辑一致。
  3. 性能承载:阿里云轻量云的带宽和CPU会影响多服务的并发能力,若服务访问量大,可升级云服务器配置。
  4. 日志排查:若某个服务无法访问,查看FRP客户端日志(Windows服务日志在logs文件夹,或命令行直接查看输出),定位是否是「本地服务未启动」或「配置错误」。

如果你的多个服务类型不同(如一个HTTP、一个TCP),或需要配置HTTPS,告诉我具体服务信息,我可以帮你生成定制化的frpc.ini配置文件,直接复制就能用~

作者:聂盼盼  创建时间:2025-11-05 15:14
最后编辑:聂盼盼  更新时间:2025-11-05 16:26