【Nginx系列】Nginx配置优先级

举报
kwan的解忧杂货铺 发表于 2024/11/28 19:48:09 2024/11/28
【摘要】 在现代互联网架构中,Nginx 以其高性能、高稳定性和丰富的功能集成为了最受欢迎的 Web 服务器之一。然而,即使是一款强大的工具,也需要正确的配置才能发挥其最大效能。 问题描述在实际部署中,我们可能会遇到 Nginx 无法正确服务静态资源的问题。例如,当 Nginx 尝试从/data/cicd/new-space/kwan/路径下查找图片资源(如202411262137475.png)时,...

在现代互联网架构中,Nginx 以其高性能、高稳定性和丰富的功能集成为了最受欢迎的 Web 服务器之一。然而,即使是一款强大的工具,也需要正确的配置才能发挥其最大效能。

问题描述

在实际部署中,我们可能会遇到 Nginx 无法正确服务静态资源的问题。例如,当 Nginx 尝试从/data/cicd/new-space/kwan/路径下查找图片资源(如202411262137475.png)时,却返回了 404 错误。这通常意味着 Nginx 的配置没有按预期生效,导致请求没有被正确处理。
在这里插入图片描述

原因分析

通过对问题进行深入分析,我们可以发现两个主要原因:

  1. location 指令优先级未正确配置:请求路径/new-space/kwan/202411262137475.png被正则匹配location ~ .*\.(gif|jpg|jpeg|png|jfif|webp)$捕获,导致静态资源路径/data/cicd/new-space/kwan/被使用,而非代理转发。

  2. 静态文件路径配置冲突:静态文件配置root /data/cicd/;应用于了/new-space/kwan/目录的子路径,但期望的是代理策略优先处理/new-space/kwan/

解决方案

为了确保/new-space/kwan/的代理策略优先生效,我们需要调整 Nginx 配置,以避免静态文件匹配规则干扰代理路径。

修正后的 Nginx 配置

以下是修正后的 Nginx 配置示例:

# 优先匹配代理路径
location ^~ /new-space/kwan/ {
    proxy_pass http://43.139.90.182:9000/new-space/kwan/;
    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;
}

# 静态文件匹配,避免影响代理
location ~ .*\.(gif|jpg|jpeg|png|jfif|webp)$ {
    root /data/cicd/;
    autoindex on;
}

关键调整

  1. 使用^~修饰符:在/new-space/kwan/前缀匹配中加^~,明确指示 Nginx 优先使用该规则,避免被正则匹配规则干扰。

  2. 代理路径独立处理/new-space/kwan/及其子路径将完全由代理处理。

  3. 静态文件独立路径:静态文件规则仍保留,但不会影响/new-space/kwan/的代理策略。

进一步检查

如果问题仍未解决,可以进行以下检查:

  1. 检查其他 location 规则:确认 Nginx 没有其他location规则可能影响该路径。

  2. 检查代理服务器资源:确认/new-space/kwan/子路径的资源在代理服务器是否正确提供。

  3. 检查静态资源目录:确认/data/cicd/目录是否存在图片资源。

结论

通过上述分析和调整,我们可以有效地解决 Nginx 在处理静态资源时返回 404 错误的问题。正确的配置和对 Nginx 工作原理的理解是确保 Web 服务器高效运行的关键。在面对配置问题时,我们应该从优先级、路径冲突等角度进行分析,并结合实际的服务器环境进行调整。通过这种方式,我们可以确保 Nginx 能够正确地处理请求,提供稳定且高效的服务。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。