Nginx 配置生效机制与 405 错误排查复盘

 更新时间:2026年08月18日 09:08:43   作者:陆枫Larry  
本文主要介绍了Nginx 配置生效机制与 405 错误排查复盘,详细分析这问题的根本原因,同时提供解决方法,包括强制重启、配置验证和显式定义默认站点,帮你彻底避坑

1. 现象描述

在解决图片上传大小限制问题时,我们修改了 Nginx 配置文件并尝试让其生效。在此过程中遇到了两个主要问题:

  1. 配置未生效:修改了 client_max_body_size 后,上传大文件依然失败(413 错误)。
  2. 接口瘫痪:在排查过程中,发现登录接口 (/api/auth/login) 和小文件上传接口突然报错,返回 HTTP 405 Method Not Allowed。

2. 原因分析

2.1 配置未生效的原因

  • 重载机制:Nginx 的 reload 命令虽然能平滑重启,但在某些系统环境下(或进程异常时),可能无法彻底清除旧的配置缓存或旧进程。
  • 验证缺失:修改文件后,如果没有通过 nginx -T 查看最终加载的配置,很难确认修改是否真的被 Nginx 读取到了。

2.2 接口报 405 (Method Not Allowed) 的原因

这是本次故障的核心原因。

  • 请求域名:小程序客户端发起的请求域名是 api.zhangxiaoxi.cn。
  • 配置缺失:我们的 Nginx 配置文件 used-car-api.conf 中,server_name 只配置了 zhangxiaoxi.cn 和 www.zhangxiaoxi.cn,漏掉了 api.zhangxiaoxi.cn。
  • 默认服务器回退 (Fallback):
    • 当 Nginx 接收到 api.zhangxiaoxi.cn 的请求时,由于找不到匹配的 server_name,它会将请求转发给 默认服务器 (Default Server)。
    • 在服务器上,按字母顺序,admin.zhangxiaoxi.cn.conf(后台管理静态资源站点)排在 used-car-api.conf 之前,或者被显式设为了默认站点。
  • 静态站点不支持 POST:默认站点是一个静态文件服务(托管前端 HTML/CSS/JS)。静态服务器通常只支持 GET 请求,收到 POST 请求(如登录、上传)时,就会拒绝并返回 405 Method Not Allowed。

3. 解决方法

3.1 修复 405 错误

在 Nginx 配置文件的 server_name 指令中,显式添加 api.zhangxiaoxi.cn

server {
    listen 443 ssl;
    # 补全所有使用的子域名
    server_name zhangxiaoxi.cn www.zhangxiaoxi.cn api.zhangxiaoxi.cn;
    
    # ...
}

3.2 确保配置生效

  1. 强制重启:当 nginx -s reload 看起来没生效时,使用 service nginx restart 进行完全重启。
  2. 进程管理:同时重启后端应用(如 PM2 中的 Node.js 进程),确保业务代码也是最新的。

4. 小结与避坑指南

为了避免日后再次遇到类似问题,建议遵循以下最佳实践:

  1. 域名清单检查:在配置 Nginx 时,务必核对客户端使用的所有域名和子域名,确保它们都出现在 server_name 中。
  2. 理解 405 错误:看到 Nginx 返回 405,第一反应应该是“请求是不是打错地方了?”——通常是打到了不支持 POST 的静态服务或默认站点上。
  3. 配置验证习惯:
    • 修改前备份。
    • 修改后用 nginx -t 检查语法。
    • 用 nginx -T 查看运行时的完整配置快照,确认修改已包含。
  4. 显式定义默认站点:建议配置一个明确的 default_server,返回清晰的错误信息(如 404 或 403),防止请求“以此充好”落入错误的站点处理逻辑中,增加排查难度。

到此这篇关于Nginx 配置生效机制与 405 错误排查复盘的文章就介绍到这了,更多相关Nginx 配置生效机制与 405内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Nginx配置网页转发的实现步骤

    Nginx配置网页转发的实现步骤

    本文主要介绍了Nginx配置网页转发的实现步骤,实现将云服务器的80端口转发到另一台服务器部署的网页,具有一定的参考价值,感兴趣的可以了解一下
    2024-05-05
  • nginx部署到服务器后文件上传提示405

    nginx部署到服务器后文件上传提示405

    使用nginx部署到服务器后,本地访问服务器地址,上传文件提示:405 Not Allowed,本文就来解决一下该问题,感兴趣的可以了解一下
    2023-10-10
  • 详解Nginx替换SSL证书后的正确操作及常见问题排查

    详解Nginx替换SSL证书后的正确操作及常见问题排查

    本文主要介绍了详解Nginx替换SSL证书后的正确操作及常见问题排查,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-08-08
  • 详解nginx实现https网站设置

    详解nginx实现https网站设置

    这篇文章主要介绍了详解nginx实现https网站设置,详细的介绍了HTTPS简介和证书生成等,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Nginx+keepalived双机热备技术实践

    Nginx+keepalived双机热备技术实践

    在互联网的高可用性 服务中,单一的服务节点往往无法满足业务对稳定性和可用性的要求,双机热备是一种常见的高可用性解决方案,它通过两台服务器同时运行相同的服务,本文将详细介绍如何在 Nginx 环境中部署双机热备方案,需要的朋友可以参考下
    2025-01-01
  • 使用Nginx创建临时和永久重定向的具体示例

    使用Nginx创建临时和永久重定向的具体示例

    HTTP 重定向 是将一个域名或地址指向另一个的方法,有几种不同类型的重定向,每种对客户端浏览器意味着不同的事情,最常见的两种类型是临时重定向和永久重定向,本文给大家介绍了使用Nginx创建临时和永久重定向的具体示例,需要的朋友可以参考下
    2024-07-07
  • 使用nginx缓存服务器上静态文件的设置方法

    使用nginx缓存服务器上静态文件的设置方法

    这篇文章主要介绍了使用nginx缓存服务器上的静态文件,文中给大家提到了nginx缓存的优点及设置方法,通过实例相结合的形式给大家介绍的非常详细,需要的朋友可以参考下
    2018-05-05
  • Nginx+Tomcat集群环境的实现

    Nginx+Tomcat集群环境的实现

    本文主要介绍了配置Nginx和Tomcat集群环境,包括负载均衡、故障转移以及配置单机应用和Tomcat集群的具体步骤, 感兴趣的可以了解一下
    2024-11-11
  • Nginx配置ssl证书(https)的全过程

    Nginx配置ssl证书(https)的全过程

    这篇文章主要介绍了Nginx配置ssl证书(https)的过程,在文中大家需要特别注意,如果有防火墙的话,记得开通443端口,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-10-10
  • Nginx外置缓存的实现示例

    Nginx外置缓存的实现示例

    本文主要介绍了Nginx外置缓存的实现示例,教你如何实现集群级缓存共享、弹性伸缩和统一清理,彻底解决命中率低和回源风暴问题,感兴趣的可以了解一下
    2026-07-07

最新评论