如何利用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文件夹,执行:
若显示「start proxy success」,说明客户端和阿里云服务端已连通!./frpc -c frpc.ini
三、测试访问(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系统
- 客户端配置文件(
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 # 本地网站端口
保存文件。
- 启动客户端(测试+后台保活)
临时测试:打开「命令提示符」,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系统
- 客户端配置文件(
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退出。
- 启动客户端(后台运行)
# 先停止之前的进程(若有) pkill frpc # 后台启动 nohup ./frpc -c frpc.ini &
三、测试访问(100%成功验证)
用公网设备(手机开流量、非本地WiFi的电脑)打开浏览器,输入:http://8.141.120.82:7071
即可直接访问你本地物理机的网站!
常见问题解决
- 若访问失败,先检查:
- 阿里云安全组是否开放了
7000和7071端口; - 本地物理机防火墙是否允许
7071端口(Windows可暂时关闭防火墙测试); - 客户端启动日志是否有
success字样(无错误信息)。
- 阿里云安全组是否开放了
有任何报错,直接截图日志给我,我帮你1分钟定位问题~
如果本地有多个服务呢?
当本地服务器有多个服务(如多个网站、API服务)时,只需在FRP配置中为每个服务添加独立的「代理规则」,让阿里云轻量云通过不同端口或子域名区分不同服务,核心是“多服务共享一个FRP连接,各自配置转发规则”,具体操作如下:
一、核心原理
FRP支持在一个客户端配置多个「代理实例」,每个实例对应一个本地服务:
- 方式1:不同端口区分(推荐,配置简单):阿里云用不同公网端口转发到本地不同服务的端口(如公网
8081→本地服务1的7071,公网8082→本地服务2的7072)。 - 方式2:子域名区分(需域名解析,更专业):绑定一个主域名(如
yourdomain.com),用子域名(service1.yourdomain.com、service2.yourdomain.com)转发到不同本地服务。
二、实操步骤(以“2个本地服务”为例)
假设你有2个本地服务:
- 服务1:网站,本地IP
192.168.2.23,端口7071(之前的服务)。 - 服务2:API服务,本地IP
192.168.2.23,端口7072(新增服务)。
第一步:阿里云服务端(FRPS)配置(无需大改)
服务端只需确保「基础通信端口」和「对外端口范围」开放,无需为每个服务单独改配置:
开放阿里云安全组:新增一条规则,开放服务2对应的公网端口(如
8082),规则如下:- 端口范围:
8082/8082 - 授权对象:
0.0.0.0/0
(若用子域名方式,只需开放80/443端口,无需额外开放端口)。
- 端口范围:
服务端配置文件(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:8081)
remote_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服务(客户端+服务端)
重启本地Windows服务(之前配置的FRP客户端服务):
- 按下
Win+R,输入services.msc,找到「FRP Client Service」,右键「重启」。 - 若未配置服务,在命令提示符中重新执行:
frpc.exe -c frpc.ini。
- 按下
重启阿里云服务端(确保配置生效):
pkill frps # 停止旧服务 nohup ./frps -c frps.ini & # 启动新服务
第四步:测试多服务访问
- 方式1(端口区分):
- 访问服务1:
http://8.141.120.82:8081 - 访问服务2:
http://8.141.120.82:8082
- 访问服务1:
- 方式2(子域名区分):
- 访问服务1:
http://service1.yourdomain.com - 访问服务2:
http://service2.yourdomain.com
- 访问服务1:
三、多服务扩展注意事项
- 端口不冲突:阿里云安全组开放的公网端口、本地服务端口、FRP配置的
remote_port都不能重复。 - 服务类型匹配:若本地服务是TCP(如数据库、远程桌面),将
type = http改为type = tcp,其他配置逻辑一致。 - 性能承载:阿里云轻量云的带宽和CPU会影响多服务的并发能力,若服务访问量大,可升级云服务器配置。
- 日志排查:若某个服务无法访问,查看FRP客户端日志(Windows服务日志在
logs文件夹,或命令行直接查看输出),定位是否是「本地服务未启动」或「配置错误」。
如果你的多个服务类型不同(如一个HTTP、一个TCP),或需要配置HTTPS,告诉我具体服务信息,我可以帮你生成定制化的frpc.ini配置文件,直接复制就能用~
最后编辑:聂盼盼 更新时间:2025-11-05 16:26