侧边栏壁纸
博主头像
前端学习

行动起来,活在当下

  • 累计撰写 313 篇文章
  • 累计创建 18 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

配置内网穿透

Administrator
2026-03-25 / 0 评论 / 0 点赞 / 5 阅读 / 0 字

一、核心需求

我在笔记本上写了网页并启动服务,想让外网的人访问该网页,且已拥有一台云服务器,计划用frp内网穿透实现。

二、frp配置步骤(简洁版)

1. 云服务器端(frps,Linux系统)

1. 下载frp,修改frps.toml配置文件,最简配置如下:

bindPort = 7878 auth.token = "自定义密码"

2. 启动frps,命令:

./frps -c frps.toml

后台运行命令:

nohup ./frps -c frps.toml

3. 云服务器控制台开放安全组端口:7878(frp通信端口)、8080、8081(及其他新增的外网访问端口),协议TCP,来源0.0.0.0/0(多端口需全部开放)。

2. 笔记本端(frpc,Windows系统)

1. 下载对应版本frp,解压后修改frpc.toml配置文件:

1. 下载对应版本frp,解压后修改frpc.toml配置文件(多端口穿透只需新增[[proxies]]节点,共享服务器连接信息):

serverAddr = "云服务器公网IP(如49.235.182.114)"
serverPort = 7878
auth.token = "与服务端一致的密码"

# 第一个端口(原网页端口,示例:本地3000,外网8080)
[[proxies]]
name = "web1"  # 名称唯一,自定义(如web、api)
type = "tcp"
localIP = "127.0.0.1"
localPort = "本地网页端口1(如3000)"  # 笔记本上第一个服务的端口
remotePort = 8080  # 外网访问该服务的端口(唯一,不重复)

# 第二个端口(新增,示例:本地8080,外网8081)
[[proxies]]
name = "web2"  # 名称与第一个不同
type = "tcp"
localIP = "127.0.0.1"
localPort = "本地网页端口2(如8080)"  # 笔记本上第二个服务的端口
remotePort = 8081  # 外网访问该服务的端口(与8080不重复)

# 可继续新增更多端口,复制上面[[proxies]]块修改即可

说明:每个[[proxies]]对应一个穿透端口,name需唯一,remotePort不能重复,localPort对应笔记本上不同服务的端口。

2. 启动frpc,命令:

frpc -c frpc.toml

出现“start proxy success”即为配置成功。

3. 外网访问方式

外网访问方式:对应不同端口,访问地址分别为:

# 第一个端口(本地3000,远程8080)
http://云服务器公网IP:8080
# 第二个端口(本地8080,远程8081)
http://云服务器公网IP:8081
# 新增端口按此规律类推

三、遇到的问题及解决方法

问题1:frpc启动报错,提示“dial tcp 云服务器IP:7878: i/o timeout”

原因及解决(按优先级):

1. 云服务器安全组未开放7878端口:去控制台添加7878、8080端口规则,等待10秒生效。

2. 云服务器内部防火墙未关闭:

CentOS系统执行命令:

systemctl stop firewalld
systemctl disable firewalld

Ubuntu系统执行命令:

ufw disable

执行完成后重启frps。

3. frps未启动成功:

查看frps进程命令:

ps aux | grep frps

若未启动,在frp文件夹执行启动命令:

./frps -c frps.toml

确认显示“frps started successfully”即为启动成功。

测试端口连通性:笔记本cmd执行命令:

telnet 云服务器IP 7878

黑屏即表示端口连通。

问题2:配置成功后,访问显示文件夹列表,不显示index.html

原因:本地服务未自动识别index.html为默认首页(大概率用Python自带http.server)。

解决方法(二选一):

1. 临时解决:访问地址后加/index.html,即http://云服务器IP:8080/index.html。

2. 永久解决:在项目文件夹新建server.py,粘贴指定Python脚本(自动将根路径指向index.html),启动命令改为python server.py。

补充:若用vite,启动命令:

0

评论区