SpringBoot 本地项目部署云服务器 + 公网域名流程 📅 2026/6/29 18:37:57 一、前言很多 Java 初学开发者写完 SpringBoot 项目只能在本地localhost运行无法让外网其他人访问。想要真正项目上线、公网可访问、绑定域名、不带端口直接访问必须完成 Linux 云服务器部署 端口放行 Nginx 反向代理 域名解析全套流程。本文全程使用MobaXterm工具一站式完成服务器连接、文件上传、项目部署、后台常驻、日志排查、Nginx 配置、域名绑定、公网正式上线。适配 CentOS7/8、阿里云 / 腾讯云所有云服务器纯新手向、零废话、可直接跟着实操上线项目。为什么推荐 MobaXterm 部署项目自带SFTP可视化文件面板直接拖拽上传 Jar 包无需 FTP、无需传输命令终端 文件管理二合一不用切换软件免费够用、轻量稳定、适配所有 Linux 远程操作支持实时日志监控、进程查看非常适合 Java 项目部署排查二、部署整体流程总览本地打包 → 云服务器环境检查 → MobaXterm 连接服务器 → 上传 Jar 包 → 后台启动 SpringBoot 项目 → 防火墙放行端口 → 安装配置 Nginx 反向代理 → 域名购买与解析 → 域名无端口公网访问三、部署前期准备1. 所需环境与资源本地环境Windows、IDEA、Maven、MobaXterm服务器阿里云 / 腾讯云 CentOS Linux 云服务器已安装 JDK1.8项目可正常本地启动的 SpringBoot 项目端口默认 8080额外资源完成备案的域名国内云服务器强制备案2. 服务器前置检查连接服务器后确认 JDK 环境正常bashjava -version输出版本号说明环境正常无输出则先安装 JDK。四、第一步IDEA 本地打包 SpringBoot 项目1. 确认打包插件项目pom.xml必须拥有 SpringBoot 官方打包插件用于打包可执行 Jarxmlbuild plugins plugin groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId version2.7.15/version executions execution goals goalrepackage/goal /goals /execution /executions /plugin /plugins /build2. Maven 打包操作IDEA 右侧 Maven 工具栏clean清除旧打包文件package打包生成可执行 Jar打包成功后项目target目录生成xxx.jar即为部署包。上线重要修改打包前必须修改项目配置数据库、Redis、RocketMQ 地址改为服务器内网 IP禁止使用 localhost、127.0.0.1防止上线后中间件连接失败五、第二步MobaXterm 连接云服务器打开 MobaXterm → 点击 Session → 选择 SSHRemote host 填写云服务器公网 IP勾选 Specify username填写服务器用户名输入服务器密码完成远程连接创建项目统一存放目录bashmkdir -p /home/ningzh/springboot-project cd /home/ningzh/springboot-project六、第三步拖拽上传 Jar 包MobaXterm 左侧为服务器可视化文件目录右侧为命令终端左侧文件夹定位到刚刚创建的/home/ningzh/springboot-project打开本地项目 target 文件夹直接将 xxx.jar 文件拖拽到左侧面板等待传输进度条走完终端执行ls能看到 jar 包即上传成功七、第四步云服务器后台启动 SpringBoot 项目1. 两种启动方式前台启动仅本地测试关闭 MobaXterm 窗口项目直接停止bashjava -jar 项目名.jar后台守护启动正式上线使用断开终端不关闭程序bashnohup java -jar 项目名.jar app.log 21 参数详细说明nohup让进程脱离终端后台永久运行app.log把程序正常运行日志输出到 app.log 文件21将报错、异常日志统一写入同一个日志文件命令放入后台执行终端可继续输入其他指令2. 实时查看启动日志判断是否启动成功bashtail -f app.log日志输出Started XxxApplication in xxx seconds代表项目启动完成监听 8080 端口。3. 查看 Java 运行进程bash# 简洁查看所有java进程 jps # 完整查看进程详情 ps -ef | grep java八、第五步服务器放行端口公网访问基础SpringBoot 项目占用 8080Nginx 占用 80http 标准端口两个端口都需要放行。1. Linux 防火墙放行端口bash# 永久放行80、8080端口 firewall-cmd --add-port80/tcp --permanent firewall-cmd --add-port8080/tcp --permanent # 重载防火墙规则生效 firewall-cmd --reload # 校验已开放端口列表 firewall-cmd --list-ports2. 云服务器控制台放行安全组阿里云 / 腾讯云服务器防火墙放行端口后还需要在后台安全组配置入站规则登录云服务器控制台找到实例对应的安全组添加入站规则放行协议 TCP端口 80、8080授权对象 0.0.0.0/0全网可访问保存规则规则即时生效此时访问公网IP:8080已经可以打开项目但是带有端口下面配置 Nginx 实现不带端口域名访问。九、完整 Nginx 安装 反向代理详细教程9.1 Nginx 作用说明反向代理外网访问 80 端口域名默认端口浏览器可省略Nginx 接收请求转发给本地 8080 端口的 SpringBoot 程序负载均衡多服务扩展、静态资源缓存、请求限流、SSL 证书 HTTPS 加密隐藏后端真实服务端口提升项目安全性9.2 CentOS 系统安装 Nginx 完整命令1. 安装 epel 软件源CentOS 默认无 nginx 安装包bash运行yum install -y epel-release2. 安装 Nginxbashyum install -y nginx3. Nginx 基础系统命令启动 / 停止 / 重启 / 开机自启bash# 启动nginx systemctl start nginx # 停止nginx systemctl stop nginx # 修改配置后重载不中断访问 systemctl reload nginx # 重启nginx systemctl restart nginx # 设置开机自启服务器重启自动运行nginx systemctl enable nginx # 查看nginx运行状态 systemctl status nginx4. 验证 Nginx 是否正常启动浏览器直接访问服务器公网 IP出现 Nginx 默认欢迎页面代表安装成功。9.3 Nginx 核心目录结构必须了解plaintext# 主配置文件我们主要修改这个文件 /etc/nginx/nginx.conf # 站点配置存放目录推荐拆分配置便于管理 /etc/nginx/conf.d/ # Nginx静态资源默认目录 /usr/share/nginx/html/ # Nginx日志目录 /var/log/nginx/9.4 两种反向代理配置方案方案一推荐拆分配置conf.d 新建站点文件便于多项目管理新建域名专属配置文件替换为你的域名例如school-market.combashvim /etc/nginx/conf.d/school-market.conf完整配置粘贴进去注释有详细讲解nginxserver { # 监听80标准http端口浏览器访问域名默认走80无需填写端口 listen 80; # 绑定你的域名多个域名空格分隔代表不带wwwwww代表带www前缀 server_name school-market.com www.school-market.com; # 日志配置区分项目日志方便排错 access_log /var/log/nginx/school-market-access.log; error_log /var/log/nginx/school-market-error.log; # 所有请求转发给本地SpringBoot 8080端口 location / { # 反向代理地址指向本机运行的springboot项目 proxy_pass http://127.0.0.1:8080; # 以下配置固定复制解决后端获取真实客户端IP、跨域、header丢失问题 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_set_header X-Forwarded-Proto $scheme; # 超时时间适配接口请求、文件上传场景 proxy_connect_timeout 60s; proxy_read_timeout 60s; } }方案二直接修改主配置 nginx.confbash运行vim /etc/nginx/nginx.conf找到 http {} 内部删除默认 server 块替换为下面内容nginxserver { listen 80; server_name school-market.com www.school-market.com; access_log /var/log/nginx/school-market-access.log; error_log /var/log/nginx/school-market-error.log; location / { 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_set_header X-Forwarded-Proto $scheme; proxy_connect_timeout 60s; proxy_read_timeout 60s; } }9.5 配置校验 重载生效1. 检查 Nginx 配置语法是否错误非常关键错字符会导致 Nginx 启动失败bash运行nginx -t输出test is successful代表配置无错误。2. 重载 Nginx配置立即生效不中断用户访问bashsystemctl reload nginx9.6 Nginx 常用排错命令bash# 实时查看访问日志 tail -f /var/log/nginx/school-market-access.log # 实时查看错误日志502/404报错全部在这里 tail -f /var/log/nginx/school-market-error.log # 查看nginx运行状态 systemctl status nginx9.7 502 Bad Gateway 报错常见原因反向代理高频问题SpringBoot 项目未启动8080 端口无服务SpringBoot 启动崩溃查看项目 app.log 日志排查异常防火墙拦截本地回环极少出现关闭防火墙测试proxy_pass 地址写错端口、IP 填写错误十、第六步域名购买 域名解析正式公网上线1. 域名购买前往阿里云万网、腾讯云 DNSPod 平台注册域名国内服务器必须完成 ICP 备案否则无法使用 80/443 端口。2. 域名解析操作步骤进入域名管理控制台找到「解析」功能添加两条 A 记录主机记录记录类型A记录值云服务器公网 IPTTL 默认 10 分钟主机记录www记录类型A记录值云服务器公网 IPTTL 默认 10 分钟保存解析记录等待 1-10 分钟全球 DNS 生效3. 访问方式对比未配置 Nginxhttp://公网IP:8080配置 Nginx 反向代理 域名解析后http://school-market.com、http://www.school-market.com无需加任何端口直接域名访问项目项目正式全网上线。十一、项目迭代更新流程后续改代码重新上线一键停止旧 SpringBoot 项目进程bash运行kill -9 $(jps | grep jar | awk {print $1})本地修改业务代码IDEA 执行 clean、package 重新打包MobaXterm 拖拽新 jar 包覆盖服务器旧文件后台启动项目bashnohup java -jar 项目名.jar app.log 21 查看 app.log 确认项目启动正常Nginx 无需改动自动转发新服务十二、线上部署全套常见报错解决1. 端口占用SpringBoot8080 被占用bashnetstat -tanlp | grep 8080 kill -9 进程PIDNginx80 端口被占用bashnetstat -tanlp | grep 80 systemctl stop nginx2. RocketMQ / 数据库配置读取失败、connect to null配置文件 key 书写不规范、线上地址未替换服务器内网 IP、使用localhost导致外部服务无法连接。 标准 mq 配置示例propertiesrocketmq.name-server192.168.117.128:9876 rocketmq.producer.groupschool-market-producer-group rocketmq.consumer.groupschool-market-consumer-group3. 外网无法访问页面双重检查①云服务器安全组放行 80、8080 ②Linux 防火墙放行端口 ③SpringBoot 正常启动 ④Nginx 运行正常4. Nginx 访问报 502 Bad Gateway后端 SpringBoot 未启动、启动报错崩溃优先查看项目 app.log 日志定位代码异常。5. 访问域名 403/404Nginx 配置 server_name 域名填写错误、proxy_pass 后端地址写错、项目接口路径错误。十三、完整上线流程总结本地 IDEA Maven 打包 → MobaXterm 远程连接 Linux 服务器 → 拖拽上传 Jar 包 → nohup 后台常驻启动 SpringBoot → 防火墙 云安全组放行 80、8080 端口 → 安装 Nginx、编写反向代理配置、重载生效 → 域名购买备案 DNS 解析绑定服务器公网 IP → 纯域名无端口公网访问项目正式上线。整套流程覆盖 Java 后端从本地开发到公网域名上线全链路包含 SpringBoot 部署、进程守护、日志排查、Nginx 反向代理核心知识点适用于课程项目、毕业设计、小型商用系统上线部署。