一、核心需求
我在笔记本上写了网页并启动服务,想让外网的人访问该网页,且已拥有一台云服务器,计划用frp内网穿透实现。
二、frp配置步骤(简洁版)
1. 云服务器端(frps,Linux系统)
1. 下载frp,修改frps.toml配置文件,最简配置如下:
bindPort = 7878 auth.token = "自定义密码"
2. 启动frps,命令:
./frps -c frps.toml后台运行命令:
nohup ./frps -c frps.toml3. 云服务器控制台开放安全组端口: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 firewalldUbuntu系统执行命令:
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,启动命令:
评论区