无域名,使用阿里云公网 IP 部署若依 + 钉钉小程序接入完整流程
重要前提你是钉钉小程序正式发布强制要求 HTTPS 域名公网 IPHTTP 仅能做本地开发调试不能提交上线发布。开发阶段可以先用公网 IP 调试接口上线必须申请域名 SSL 证书。防火墙已经处理完毕仅开放 80、443、228080/3306/6379 全部公网禁用后端 jar 监听127.0.0.1:8080由 Nginx 代理。环境宝塔面板、JDK1.8、MySQL5.7、Redis若依前后端代码本地已经跑通。一、服务器 宝塔前置检查部署前排查1. 确认服务器网络连通1SSH 连接服务器正常 2宝塔面板访问注意你之前把 51987 防火墙禁用了先把宝塔端口 51987 在防火墙启用来源 IP 填你当前宽带公网 IP只允许你自己访问宝塔否则进不去宝塔后台。 不要设置 0.0.0.0/0对外服务器防止爆破。登录宝塔之后检查软件JDK 1.8 已安装java -versionMySQL5.7 运行只允许 127.0.0.1 访问删除所有外网授权账号Redis 运行设置密码禁止外网访问Nginx 已安装2. 数据库准备本地若依数据库完整导出 sql宝塔 phpMyAdmin 新建数据库导入 sql修改后端application.yml数据库、redis 连接配置全部使用 127.0.0.1不要填公网 IPyamlspring: datasource: url: jdbc:mysql://127.0.0.1:3306/ruoyi?xxx host: 127.0.0.1 redis: host: 127.0.0.13. SpringBoot 后端 yml 关键配置非常关键yamlserver: port: 8080 address: 127.0.0.1 # ❗只允许本机Nginx访问外部网络无法直连8080不要写0.0.0.0:8080写 0.0.0.0 即使阿里云防火墙封禁服务器内部仍然会监听全部网卡多一层安全风险。二、后端部署宝塔部署 jar 包本地 Maven 打包若依后端clean package -DskipTests得到ruoyi-admin.jar宝塔 → 文件新建目录/www/wwwroot/ruoyi-server上传 jar 包到此目录宝塔 →【软件商店】安装Java 项目管理器Java 项目管理器 → 添加项目项目路径/www/wwwroot/ruoyi-serverjar 包选择上传的 ruoyi-admin.jarJDK 版本JDK1.8端口8080勾选仅本机访问127.0.0.1启动项目查看日志确认启动成功无报错。✅后端排查验证服务器内部测试SSH 登录服务器执行 curlbashcurl http://127.0.0.1:8080/api/doc.html能够返回接口文档 html代表后端 jar 正常运行。本地电脑浏览器直接访问http://你的公网IP:8080必须访问失败 / 超时。这是预期现象公网不能直接访问后端全部走 Nginx 80 代理。三、部署若依 Vue 前端本地前端执行npm run build生成 dist 目录宝塔网站 → 添加站点域名填写你的服务器公网 IP根目录/www/wwwroot/ruoyi-webPHP 版本选择【纯静态】将 dist 内全部文件上传到此目录。修改前端.env.production生产环境接口地址plaintextVITE_API_URL /api不要写完整 http://ip:8080使用相对路径全部交给 Nginx 代理。四、Nginx 站点配置核心同时支持 Web 前端 /api 后端代理 后续钉钉小程序编辑宝塔该站点的 Nginx 配置完整配置复制替换nginxserver { listen 80; server_name 你的公网IP; root /www/wwwroot/ruoyi-web; index index.html index.htm; # Vue history模式前端路由 location / { try_files $uri $uri/ /index.html; } # 接口代理web端、钉钉小程序全部走这个/api location /api/ { proxy_pass http://127.0.0.1:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 60s; } # 允许跨域钉钉小程序调试会用到 add_header Access‑Control‑Allow‑Origin *; add_header Access‑Control‑Allow‑Methods GET,POST,PUT,DELETE,OPTIONS; add_header Access‑Control‑Allow‑Headers Authorization,Content‑Type; if ($request_method OPTIONS) { return 204; } }保存配置重载 Nginx检查配置无报错。✅整体链路验证浏览器访问http://你的公网IP若依 web 管理页面正常打开可以登录正常增删改查。访问http://你的公网IP/api/doc.html接口文档正常打开。链路浏览器 80 → Nginx → 转发 127.0.0.1:8080 后端。公网完全碰不到 8080 端口。五、钉钉小程序接入准备开发调试阶段无域名⚠️重要钉钉小程序正式发布不允许裸 IP http只能开发工具调试阶段临时使用。1. 钉钉小程序后台配置登录钉钉开放平台进入你的小程序拿到appKey、appSecretsecret 严禁放到前端只存后端 yml开发调试阶段 钉钉开发者工具 → 详情 →【本地设置】勾选不校验合法域名、web-view业务域名、TLS 版本以及 HTTPS 证书勾选之后小程序就可以请求你的http://公网IP/api/xxx接口做增删改查。 一旦取消勾选或者提交发布http 裸 IP 直接报错。2. 小程序请求地址写法小程序 js 请求地址统一写js运行const baseUrl http://你的公网IP/api //登录接口 dd.request({ url: baseUrl /ding/miniapp/login, method:POST, data:{authCode:res.authCode} }) //业务增删改查示例 dd.request({ url: baseUrl /system/user/list, headers:{ Authorization:Bearer token } })3. 后端开发准备user 表增加字段ding_user_id varchar(64)存储钉钉小程序用户 ID用于账号绑定。后端 application.yml 配置钉钉参数yamlding: app-key: xxx app-secret: xxx写登录接口/api/ding/miniapp/login接收小程序 authCode调用钉钉 openapi 换取 userId匹配系统用户返回若依的 token。后续所有增删改查复用若依原有 Controller不需要重写业务代码小程序请求带上 Authorization token 即可。六、完整排查清单出问题按顺序查现象 1web 页面打不开宝塔站点是否启动Nginx 配置语法是否报错服务器防火墙 80 端口启用。现象 2网页能打开但是接口报 404前端VITE_API_URL/apiNginx 的location /api/代理是否正确jar 后端是否真正启动成功看 Java 项目管理器日志。现象 3网页正常钉钉小程序请求报错开发者工具是否勾选【不校验域名】检查 Nginx 跨域配置OPTIONS 请求返回 204看 Nginx 访问日志、后端 jar 日志看请求有没有到达后端。现象 4小程序能调登录接口业务接口 401 token 失效token 传递的 header 名称必须是Authorization: Bearer xxx和 web 端保持一致。七、上线必须要做绕不开你现在公网 IPHTTP 只能开发调试钉钉小程序小程序提交发布审核的时候必须使用域名 HTTPS 证书。购买域名备案域名解析指向你的公网 IP宝塔申请免费 SSL 证书配置 443 HTTPS钉钉开放平台小程序后台配置 request 合法域名填写你的https://xxx.com。八、整体架构回顾互联网 Web 用户http://公网IP→ Nginx80 →代理127.0.0.1:8080后端钉钉小程序调试http://公网IP/api→ Nginx80 →代理127.0.0.1:8080后端MySQL、Redis、SpringBoot8080 全部不暴露公网只有 Nginx 对外 80/443。

相关新闻

均匀稳定性:无需对数项的泛化误差上界及其工程启示

均匀稳定性:无需对数项的泛化误差上界及其工程启示

在机器学习理论研究中,算法的稳定性是衡量其泛化能力的关键指标之一。当我们训练一个模型时,最关心的问题之一就是:它在训练集上表现良好,是否在未见过的数据上也能有相近的表现?传统的泛化理论,如基于VC维…

2026/10/13 22:59:27 阅读更多 →
MySQL数据库增删改查入门:从基础语法到实战应用

MySQL数据库增删改查入门:从基础语法到实战应用

1. 项目概述:从零上手数据库操作 刚接触后端开发或者数据分析,你绕不开的一个坎就是数据库。而说到数据库,MySQL绝对是那个你最先遇到、也最常打交道的“老朋友”。很多人一上来就被“增删改查”这四个字吓到,觉得这是多么高深的技…

2026/10/14 0:00:25 阅读更多 →
网盘下载速度慢到怀疑人生?这款免费油猴脚本让下载速度快10倍

网盘下载速度慢到怀疑人生?这款免费油猴脚本让下载速度快10倍

网盘下载速度慢到怀疑人生?这款免费油猴脚本让下载速度快10倍 【免费下载链接】baiduyun 油猴脚本 - 一个免费开源的网盘下载助手 项目地址: https://gitcode.com/gh_mirrors/ba/baiduyun 你是否也有过这种崩溃瞬间:网盘里躺着一个 3GB 的项目文件…

2026/10/14 0:00:24 阅读更多 →

最新新闻

微信小程序奶茶店毕设从0到1全流程指南

微信小程序奶茶店毕设从0到1全流程指南

十个计算机毕设选题里,大概有五个是“基于微信的奶茶店小程序”。这个题目乍一看很重复,但它能常年被列入选题清单是有原因的:业务模型清晰,用户能一眼看懂价值;涉及点单、支付、购物车、后台管理、数据统计这些经典模…

2026/10/13 23:59:41 阅读更多 →
微生物群落结构差异分析:从统计显著到生物学可解释

微生物群落结构差异分析:从统计显著到生物学可解释

1. 这不是“画个热图就完事”的统计游戏很多人第一次接触“微生物群落结构差异分析”&#xff0c;脑子里浮现的是一张带颜色的热图、几个堆叠柱状图&#xff0c;外加一句“两组间存在显著差异&#xff08;p<0.05&#xff09;”。我见过太多项目——某高校实验室的土壤样本测…

2026/10/13 23:59:41 阅读更多 →
智慧用能研究院Java一面:高频考点与模拟面试实战拆解

智慧用能研究院Java一面:高频考点与模拟面试实战拆解

一个模拟出来的“研究院一面”&#xff0c;为什么值得认真拆&#xff1f;很多同学一听说“模拟面试”就觉得是走过场——找个学长学姐或者培训机构老师&#xff0c;照着简历问一圈&#xff0c;然后给个“不错”“基础还行”的评价&#xff0c;就结束了。但我可以负责任地讲&…

2026/10/13 23:59:41 阅读更多 →
AnyPS5:基于语义桥接的PS5游戏跨平台运行技术解析

AnyPS5:基于语义桥接的PS5游戏跨平台运行技术解析

1. 项目概述&#xff1a;一个被误读的命名现象&#xff0c;背后是跨平台兼容性设计的现实困境“AnyPS5”这个词最近在多个技术社区和硬件讨论区频繁出现&#xff0c;但几乎没人能说清它到底指什么。它既不是索尼官方发布的型号&#xff0c;也不是某款已上市设备的代号&#xff…

2026/10/13 23:59:41 阅读更多 →
Manjaro GNOME配置包冲突:manjaro-gnome-settings与-18.0互斥解析

Manjaro GNOME配置包冲突:manjaro-gnome-settings与-18.0互斥解析

1. 问题本质&#xff1a;这不是系统坏了&#xff0c;是包管理器在“认真履职”刚看到这个报错——manjaro-gnome-settings 与 manjaro-gnome-settings-18.0 有冲突——很多刚从Ubuntu或Windows转来的用户第一反应是“系统崩了”“是不是升级把GNOME搞挂了”。其实恰恰相反&…

2026/10/13 23:59:41 阅读更多 →
MyBatis插件机制深度剖析:从动态代理到SQL改写与加解密实战

MyBatis插件机制深度剖析:从动态代理到SQL改写与加解密实战

1. 插件机制的本质&#xff1a;不是魔法&#xff0c;是接口的排列组合我最早接触Mybatis插件的时候&#xff0c;把文档翻来覆去看了好几遍&#xff0c;脑子里一直是糊的。原因很简单&#xff1a;网上大部分教程上来就丢一个拦截器的代码&#xff0c;然后告诉你“这样就能自动分…

2026/10/13 23:58:40 阅读更多 →

日新闻

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介&#xff1a;基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码&#xff0c;面向计算机相关专业课程设计与期末大作业学生&#xff0c;以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程&#xff0c;…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程&#xff1a;键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化&#xff0c;十个新手有八个栽在"往输入框里填东西"这件事上&#xff1a;要么填不进去&#xff0c;要么填了一半&#xff0c;要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程&#xff1a;阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀&#xff1a;什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面&#xff0c;跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →