无域名,使用阿里云公网 IP 部署若依 + 钉钉小程序接入完整流程

发布时间:2026/8/15 11:07:54
无域名,使用阿里云公网 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。