【Java】踩坑实录:Spring Boot + Nginx 本地部署404终极排查:从80端口被占用到配置生效全流程 📅 发布时间:2026/7/6 18:57:38 👁️ 浏览次数: 前言在搭建前后端分离项目本地部署环境时遇到了经典的“Nginx代理访问404”问题Spring Boot后端8106端口启动正常Nginx看似启动成功但访问localhost始终返回404甚至出现bind() to 0.0.0.0:80 failed (10013)启动报错。经过多轮排查最终定位了端口占用、配置路径、进程重启三大核心坑点。本文将完整还原排查过程与解决方案希望能帮到同样踩坑的小伙伴少走弯路。关键在于通过查看nginx-1.28.0\logs\error.log的日志发现了是端口占用问题。一、问题背景项目环境后端Spring Boot 2.6.2运行端口8106接口前缀/app/前端静态资源打包后存放于D:\reference-project\package\front\nginx-1.28.0\html\public代理Nginx 1.28.0Windows版计划代理前端静态资源后端接口目标访问localhost打开前端页面且前端能正常调用后端接口异常现象Spring Boot后端日志正常访问http://localhost:8106/app/xxx能正常返回接口数据Nginx启动时提示bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)强行启动Nginx后访问localhost返回HTTP Error 404. The requested resource is not found.确认public目录下存在index.html排除静态资源缺失问题。二、核心排查过程按优先级排序步骤1验证静态资源有效性排除基础问题首先确认前端静态资源路径无误打开文件资源管理器核对路径D:\reference-project\package\front\nginx-1.28.0\html\public下存在index.html、static等核心文件排除“文件缺失导致404”的基础问题。步骤2定位Nginx启动报错核心原因——80端口被系统占用通过netstat -ano | findstr :80命令查看端口占用发现[::]:80的监听进程PID为4这是Windows的System系统进程。关键知识点PID 4 占用80端口的本质PID 4对应的是Windows内核级的HTTP.sys驱动Windows HTTP服务该服务支撑IIS、网络打印机共享、WinRM远程管理等功能会默认占用80端口。此时直接启动Nginx监听80端口必然触发10013权限禁止错误。步骤3修改端口后仍404——排查配置与重启问题将Nginx监听端口改为8080后访问localhost:8080仍报404核心原因有二配置未生效仅修改端口未使用绝对路径配置静态资源且未彻底重启Nginx访问地址错误改端口后未在浏览器中添加端口号仍访问localhost默认80端口。三、终极解决方案可直接复制落地结合本次问题最终采用**“修改Nginx配置 彻底重启进程 验证端口访问”**的方案兼顾开发便利性与系统服务安全性不停止Windows HTTP服务。方案1修改Nginx核心配置nginx.conf打开nginx-1.28.0\conf\nginx.conf替换server块配置重点解决静态资源路径、端口冲突、SPA路由、接口代理四大问题# Nginx核心配置适配Windows本地开发 worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; # 核心服务配置 server { listen 8080; # 避开80端口冲突改为8080 server_name localhost; charset utf-8; # 1. 前端静态资源代理关键可使用绝对路径 root D:/reference-project/package/front/nginx-1.28.0/ location / { root html/public; index index.html index.htm; try_files $uri $uri/ /index.html; # 支持SPA路由刷新避免子路径404 } # 2. 后端接口代理匹配前端请求前缀/app/ location /app/ { proxy_pass http://localhost:8106/app/; # 代理到Spring Boot后端 proxy_redirect off; # 传递请求头解决后端获取客户端IP、Host异常问题 proxy_set_header Host $host; proxy_set_header X-real-ip $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } # 错误页面配置 error_page 500 502 503 504 /50x.html; location /50x.html { root html; } } }方案2管理员权限彻底重启Nginx避免进程残留Windows下Nginx进程易残留导致新配置无法生效必须以管理员身份执行以下命令# 1. 进入Nginx安装目录cdD:\reference-project\package\hzb-front\nginx-1.28.0# 2. 强制杀死所有Nginx进程核心避免残留taskkill /f /im nginx.exe# 3. 重新启动Nginxnginx方案3验证部署结果前端页面验证浏览器访问http://localhost:8080成功加载前端页面后端接口验证前端调用接口如/app/user/info能正常获取后端返回数据日志验证查看nginx-1.28.0\logs\error.log无任何报错信息说明部署成功。四、拓展补充两种端口解决方案对比解决方案操作方式适用场景优缺点改Nginx端口本文方案将监听端口改为8080/8090等本地开发、无需使用80端口优点不影响系统服务缺点访问需加端口号释放80端口停止Windows HTTP服务net stop http生产部署、必须使用80端口优点可直接访问localhost缺点可能影响IIS、网络打印机等功能提示本地开发优先选择“改Nginx端口”生产环境若需使用80端口可先评估系统服务依赖再执行net stop http停止服务。五、Windows下Nginx本地部署核心避坑点路径坑Windows下配置root必须使用绝对路径/或\\分隔相对路径易因启动目录不同导致文件找不到端口坑1024以下端口如80需管理员权限且易被系统服务占用开发建议使用8080/8888等端口重启坑修改配置后必须先taskkill强制杀死进程再启动仅用nginx -s reload可能因进程残留失效SPA坑前端为Vue/React等单页应用时必须添加try_files $uri $uri/ /index.html;否则路由刷新会404。六、总结本次404问题的核心逻辑是80端口被系统占用 → Nginx启动失败/配置未生效 → 静态资源无法被正确代理 → 访问报404。注文档部分内容由 AI 生成
Windows Azure Platform体验():SQL Azure 己断坪事1. 为什么要研究优化器算法? 它的关联问题:训练为什么要调参,调的是什么参? 如果就这个问题去问各种大语言模型,它们能给出一堆的理由。 但就博主而言,答案只有一个: 干掉调参ÿ… 2026/7/3 4:57:20
2026年度权威榜单:深度剖析GEO优化龙头企业及五大技术服务商综合实力排名 导语: 随着生成式AI(AIGC)全面重塑信息获取路径,企业在豆包、DeepSeek、ChatGPT等生成式引擎中的可见性已成为数字营销的新战场。GEO(生成引擎优化)作为AI时代的营销基石,其技术门槛与服务深度正… 2026/5/17 10:26:10
Python Pandas 与 Tableau 联动分析:小红书达人数据清洗到可视化的5个关键步骤 Python Pandas 与 Tableau 联动分析:小红书达人数据清洗到可视化的5个关键步骤在当今数据驱动的商业环境中,能够高效地从原始数据中提取有价值的信息并转化为直观的可视化洞察,已成为数据分析师的核心竞争力。本文将带您深入探索如何利用Pyth… 2026/7/7 5:59:41
WebGL 2 实战:单文件移植与扩展 Heartfelt 玻璃雨滴折射效果 一、项目效果与功能概览 这个项目的交付物只有一个 index.html,不依赖 npm、不依赖 Three.js,也不需要额外资源文件。页面打开后,主视觉是一个全屏 WebGL 2 canvas:背景默认是双色渐变流体,前景覆盖大量玻璃雨滴、拖尾… 2026/7/7 5:59:41
阿里云PolarDB_SQL审计与洞察_企业级安全合规最佳实践 数据库的 SQL 审计功能有什么用?数据库的 SQL 审计功能用于将所有 SQL 操作(DDL/DML/查询)按用户、时间、IP 等维度完整记录归档,用途主要包括:合规审计(等保 2.0、HIPAA、PCI-DSS)、数据泄露溯… 2026/7/7 5:57:40
全球首张蓝牙6.2认证落地,6.0 VS 6.2,欧飞信教你蓝牙模组如何选型? 2026年7月4日,慧翰股份宣布其自研蓝牙协议栈FlairBlue正式通过蓝牙技术联盟6.2核心规范认证,成为全球首家通过蓝牙6.2认证的模组厂商。一张认证证书的背后,是蓝牙技术长达数年的演进积累。当蓝牙6.2将连接间隔从7.5毫秒压缩至375微秒… 2026/7/7 5:53:39
ROS 2 URDF 导入与关节状态发布 # 进入 URDF 目录,替换为自己路径 cd /root/ros2_ws/src/robotguanhe/urdf/# 加载指定的机器人 URDF 模型文件 ros2 run robot_state_publisher robot_state_publisher guanheRobotMachine.urdf启动图形界面工具,手动模拟和发布机器人的关节角度作用&… 2026/7/7 5:51:39
【3.13】FFT变换testbench的设计 目录 1.引言 2.testbench编写 3.仿真初步测试 1.引言 我们通过12小节的学习之后,初步完成了FFT变换的FPGA设计,在本小节,我们将完成FFT变换的仿真测试功能。 2.testbench编写 我们编写如下的testbench程序: `timescale 1ns / 1ps //////////////////////////////////… 2026/7/7 5:51:39
Acunetix v24.8 深度解析:DAST漏洞扫描器核心原理与DevSecOps实践 1. 项目概述:Acunetix v24.8 高级版漏洞扫描器深度解析作为一名在网络安全领域摸爬滚打多年的老兵,我深知一款趁手的“兵器”对于安全测试工作意味着什么。今天要聊的,就是Web应用安全测试领域里一个响当当的名字——Acunetix。特别是其v24.8… 2026/7/7 0:01:11
如何3步搞定加密视频下载:跨平台资源嗅探与解密工具终极指南 如何3步搞定加密视频下载:跨平台资源嗅探与解密工具终极指南 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 你是… 2026/7/7 0:03:13
Jailhouse-gui可视化管理工具:让多核处理器分区变得简单高效 Jailhouse-gui可视化管理工具:让多核处理器分区变得简单高效 【免费下载链接】Jailhouse-gui A graphical user interface (GUI) tool for configuring and managing Jailhouse, a Linux-based hypervisor for partitioning multicore processors into isolated cel… 2026/7/7 0:03:13
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/6 8:43:22
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/6 7:29:49
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/6 7:29:51