【前端部署在云服务器如何与本地联调--Frp内网穿透】

【前端部署在云服务器如何与本地联调--Frp内网穿透】

苍穹外卖前端部署在云服务器如何与本地联调--Frp内网穿透

1. 前言

写这片文章的目的是为了解决上篇苍穹外卖项目的前端部署到云服务器的遗留问题:前端的云服务器的IP是公网IP,而我本地调试的Java后端是内网,前端响应的地址找不到本地的服务器。那么如何让云服务器上的前端项目能够找到后端的对应的地址呢?这就可以使用内网穿透技术了,将本地的端口暴露给服务器,让服务器自己找到本地的IP和8080端口,那么使用开源的FRP工具可以很好的解决。

2. FRP是什么

在这里插入图片描述


Fast Reverse Proxy(FRP)
一款开源内网穿透工具,通过在公网服务器部署 frps、在内网主机运行 frpc,它通过“反向隧道”把位于 NAT/防火墙后的内网服务安全地映射到公网,实现无需公网 IP 也能被外网访问。

  • 支持协议:TCP、UDP、HTTP、HTTPS
  • 典型用途:远程桌面/SSH、本地 Web 开发调试、物联网设备远程管理、企业混合云互连等
  • 角色分工
    • frps(服务端):部署在具备公网 IP 的云主机,负责接收外部请求并统一转发。
    • frpc(客户端):运行在内网主机,主动连到 frps,注册本地要暴露的服务。

3. 解决步骤

3.1 在云服务器安装服务端frps,然后开启开机自启(参考第4部分

根据自己云服务器的系统安装好frps后,在Nginx配置文件里,将端口修改成代理的转发端口,然后启动服务端,

# `Nginx`中的苍穹外卖配置文件路径(上篇博客里创建的) /etc/nginx/conf.d/waimai.conf 
在这里插入图片描述
server { listen 80; server_name IP;# 这里填你的服务器公网IP或域名 location / { root /var/www/sky;# 你的项目存放路径 index index.html index.htm;# try_files $uri $uri/ /index.html; }# 错误页面配置 error_page 500502503504 /50x.html; location = /50x.html { root /usr/share/nginx/html;} location /api/ { proxy_pass http://127.0.0.1:18080/admin/;# frp 通过 18080 暴露本地服务(设置转发端口) proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}

3.2 在本地电脑安装客户端fprc(参考第4部分

安装好本地后,启动客户端,查看日志,看到以下内容就是连接成功!

在这里插入图片描述


【注意】一定要先在阿里云服务器的安全组中将要代理转发的远程端口(入方向)打开,端口保持一致

4. Frp(C/S)0.64.0各个系统的安装方法

4.1 frps安装(Linux)服务端

  • 下载
curl -LO <https://github.com/fatedier/frp/releases/download/v0.64.0/frp_0.64.0_darwin_arm64.tar.gz>tar -zxvf frp_0.64.0_darwin_arm64.tar.gz # 以下服务端和客户端的frp 在Linux系统中都放在/usr/local/目录下mv frp_0.64.0_darwin_arm64 frp sudomv frp /usr/local/ cd /usr/local/frp 

管理命令

#启动并设置开机自启:sudo systemctl daemon-reload sudo systemctl start frps sudo systemctl enable frps sudo systemctl restart frps sudo systemctl status frps sudo systemctl stop frps # 查看连到 7000 端口(FRP 通信端口)的客户端 IP ss -antp |grep :7000 

守护进程来启动frps

# 在客户端机器上创建 Systemd 服务文件sudonano /etc/systemd/system/frps.service 
[Unit]Description=frp server After=network.target syslog.target Wants=network.target [Service]Type=simple # ⚠️ 注意:请确保路径与你实际安装路径一致ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.toml [Install]WantedBy=multi-user.target 

修改frps.toml文件

bindAddr ='0.0.0.0' bindPport =7000# 我是做联调的,用来代理后端的,所以设置这个#vhostHttpPort = 80#vhostHttpsPort = 443 auth.method ="token" auth.token ="1234567890a"# dashboard_port = 7500 webServer.addr ="0.0.0.0" webServer.port =7500 webServer.user ="admin" webServer.password ="admin123"

4.2 frpc安装(windows)客户端

[[苍穹外卖项目#3-2 本地后端+ 云端前端 联调]]

 serverAddr ="ip" serverPort =7000 auth.method ="token" auth.token ="1234567890a"[[proxies]] name ="test-sky"type="tcp" localIP ="127.0.0.1" localPort =8080 remotePort =18080

本地frpc命令:

frpc.exe -c frpc.toml 

4.3 frpc安装(mac)客户端

  • 下载
curl -LO <https://github.com/fatedier/frp/releases/download/v0.64.0/frp_0.64.0_darwin_arm64.tar.gz>tar -zxvf frp_0.64.0_darwin_arm64.tar.gz mv frp_0.64.0_darwin_arm64 frp mv frp ~/local/ # M1芯片,如果M2芯片是:_amd64.tar.gz
frp-mac-0.64.0
  • 守护进程自启动(launchd)

修改frpc.toml文件

serverAddr ="ip" serverPort =7000 auth.method ="token" auth.token ="1234567890a"[[proxies]] name ="test-sky"type="tcp" localIP ="127.0.0.1" localPort =8080 remotePort =18080
#创建launchdnano ~/Library/LaunchAgents/com.userFrp.frpc.plist 
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPEplistPUBLIC"-//Apple//DTD PLIST 1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plistversion="1.0"><dict><key>Label</key><string>com.userFrp.frpc</string><key>ProgramArguments</key><array><string>/Users/tp/local/frp/frpc</string><string>-c</string><string>/Users/tp/local/frp/frpc.toml</string></array><key>WorkingDirectory</key><string>/Users/tp/local/frp</string><key>StandardOutPath</key><string>/Users/tp/local/frp/log/frpc.log</string><key>StandardErrorPath</key><string>/Users/tp/local/frp/log/frpc-error.log</string><key>RunAtLoad</key><true/><key>KeepAlive</key><true/><key>AbandonProcessGroup</key><true/><key>NetworkState</key><true/></dict></plist>

验证和管理

# 首次加载 启动 launchctl load ~/Library/LaunchAgents/com.userFrp.frpc.plist launchctl start com.userFrp.frpc # 验证 launchctl list |grep frpc #查看日志:tail -f ~/local/frp/frpc.log 
# 重启卸载 launchctl stop com.userFrp.frpc launchctl unload ~/Library/LaunchAgents/com.userFrp.frpc.plist 

4.4 frpc安装(Linux)客户端

下载地址

*curl -LO <https://github.com/fatedier/frp/releases/download/v0.64.0/frp_0.64.0_linux_amd64.tar.gz>tar -zxvf frp_0.64.0_linux_amd64.tar.gz mv frp_0.64.0_linux_amd64 frp sudomv frp /usr/local/* cd /usr/local/frp 
frp-linux-0.64.0

管理命令

#文件更新并启动:sudo systemctl daemon-reload sudo systemctl start frpc # 设置开机自启sudo systemctl enable frpc # 重启sudo systemctl restart frpc # 查看状态sudo systemctl status frpc # 停止sudo systemctl stop frpc # 实时滚动查看最后 50 行日志sudo journalctl -u frpc -f # 查看连到 7000 端口(FRP 通信端口)的客户端 IP ss -antp |grep :7000 

守护进程来启动frpc

# 在客户端机器上创建 Systemd 服务文件sudonano /etc/systemd/system/frpc.service 
[Unit]Description=frp server After=network.target syslog.target Wants=network.target [Service]Type=simple # ⚠️ 注意:请确保路径与你实际安装路径一致ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc.toml [Install]WantedBy=multi-user.target 

测试

cd /usr/local/frp ./frpc -c ./frpc.toml 

修改frpc.toml文件

serverAddr ="ip" serverPort =7000 auth.method ="token" auth.token ="1234567890a"[[proxies]] name ="java-skt-linux"type="tcp" localIP ="127.0.0.1" localPort =8080 remotePort =18080

Read more

前端实战:基于Vue3与免费满血版DeepSeek实现无限滚动+懒加载+瀑布流模块及优化策略

前端实战:基于Vue3与免费满血版DeepSeek实现无限滚动+懒加载+瀑布流模块及优化策略

目录 前端实战:基于Vue3与免费满血版DeepSeek实现无限滚动+懒加载+瀑布流模块及优化策略 一、前言 二、如何使用腾讯云免费满血版deepseek 1、腾讯云大模型知识引擎体验中心 2、体验deepseek联网助手 3、人机交互获取AI支持 三、基于DeepSeek实现无限滚动+懒加载+瀑布流模块 1、无限滚动+懒加载+瀑布流模块的底层逻辑 2、人机交互策略与Deepseek的实现过程 ①虚拟列表管理 ②布局容器初始化 ③动态渲染与销毁机制 ④无线滚动实现 ⑤内存优化策略 四、最终代码呈现 1、组件代码 2、组件用法 五、结语         作者:watermelo37         ZEEKLOG万粉博主、华为云云享专家、阿里云专家博主、腾讯云、支付宝合作作者,全平台博客昵称watermelo37。         一个假装是giser的coder,做不只专注于业务逻辑的前端工程师,Java、Docker、

在自动化脚本中如何在自定义ui中使用webview来无限扩展ui?

在自动化脚本开发中,原生 UI 控件虽能满足基础的界面展示与交互需求,但面对复杂的页面逻辑、动态的内容渲染以及个性化的交互设计时,其扩展性会受到一定限制。WebView 控件能够将网页的灵活开发特性与自动化脚本的原生能力深度融合,实现 UI 的无限扩展。本文将从 WebView 的集成原理、与自动化脚本的无缝交互方式出发,结合完整的 Demo 源码,详细讲解如何在UI 中高效集成 WebView,让 H5 页面与原生自动化脚本协同工作,打造更灵活、更强大的自动化交互界面。 一、WebView 核心能力与集成前提 1.1 WebView 的核心价值  WebView 控件并非简单的网页加载容器,而是打通了原生自动化脚本与H5 网页的双向通信通道,其核心价值体现在三个方面: 1. UI 扩展无限化:借助 H5 的生态优势,实现原生 UI 难以开发的复杂界面,如数据可视化图表、动态表单、

Spring Boot 3.x RestTemplate迁移至WebClient问题详解与解决方案

目录 * Spring Boot 3.x RestTemplate迁移至WebClient问题详解与解决方案 * 一、RestTemplate弃用背景与迁移策略 * 1.1 弃用原因分析 * 1.2 迁移依赖配置 * 二、核心迁移方案:RestTemplate ↔ WebClient映射 * 2.1 基础迁移对照表 * 2.2 复杂场景迁移 * 三、错误处理机制迁移 * 3.1 错误处理对照 * 3.2 统一错误处理策略 * 四、异步到同步的桥接方案 * 4.1 阻塞式适配器 * 4.2 Spring MVC控制器中的WebClient使用 * 五、测试策略迁移 * 5.1 单元测试对比 * 5.2 集成测试工具类 * 六、

实验三 Windows Server 2022/2025 搭建 Web 服务器实验指导书

实验三 Windows Server 2022/2025 搭建 Web 服务器实验指导书

作者:非凡大爹|版本:v1|日期:2026-03-30|DocID:CN-LAB-2026-03-WEB-1-LG-V1 原创声明:本文为非凡大爹原创,首发于ZEEKLOG,转载或引用请注明出处。 一、实验基本信息 课程名称: Windows 网络管理 / 网络操作系统 / 服务器配置与管理 实验名称: Windows Server 2022/2025 搭建 Web 服务器 实验性质: 验证性 + 应用性实验 实验类别: 综合配置实验 建议学时: 2 学时 实验方式: 学生独立操作 + 结果验证 二、实验目的 1. 知识目标 理解 Web 服务器的基本作用,了解网站从“本地网页文件”到“网络可访问服务”的基本发布过程,