nginx配置报404问题排查解决

 更新时间:2023年08月09日 10:28:25   作者:小马reviewing  
这篇文章主要给大家介绍了关于nginx配置报404问题排查解决的相关资料,当我们在访问网站时常常会遇到一些我们没能想到的问题或者其他错误,此时我们访问的是无法路由的页面,也就是404页面,需要的朋友可以参考下

前言

今天遇到一个问题,问题是这样的,我们开发了一个对接项目,我们会给对接方一个通知的url,以通知我们订单的变更,但是我们给的通知url是线上的,测试环境的配置并没有给对方,并且对方没有测试环境,所以只能用线上测试。

我们代码开发完毕后,想测试通知接口,但想着通知他们把线上接口更改成测试环境,流程比较复杂,以后版本上线还得切换成线上环境,多此一举。所以我们想到用nginx做反向代理。

由于我们线上环境nginx 配置比较复杂,我就简化写下当时的nginx配置:

测试环境:

server {
    listen       80;
    server_name test.xxxxx.cn
    location /notice {
       include proxy.conf;
       proxy_pass http://127.0.0.1:8899;
    }
}

生产环境:

server {
    listen       80;
    server_name www.xxxxx.cn
    location /notice {
      include proxy.conf;
      proxy_pass http://test.xxxxx.cn;
    }
}

这样我们在访问www.xxxxx.cn/notice 的时候一直报404,根据nginx访问日志查,我们看到生产环境域名的access.log 是有记录,而且返回404,但测试环境域名的access.log并没有日志。

一开始我们以为是不是斜杠拼错了,排查了许久,但发现也不是,下篇我会再讲一下nginx使用斜杠注意事项。

后面找了下架构师,姜还是老的辣,才查出问题出在哪里。

nginx将请求的标头字段"Host",也就是

蓝色部分,以确定应将请求路由到哪个服务器,如果它的值不匹配任何服务器名称,或者请求根本不包含这个头字段,那么 nginx 将把请求路由到这个端口的默认服务器

在上面的配置中访问www.xxxxx.cn/notice,请求到生产的时候,由于生产环境配置 server_name www.xxxxx.cn所以可以请求到,但是代理到test.xxxxx.cn时候因为请求中的Host还是www.xxxxx.cn,所以在测试环境的nginx并没有匹配到www.xxxxx.cn server_name,所以返回404。

那解决方案就是配置Host

生产环境:

server {
    listen       80;
    server_name www.xxxxx.cn
    location /notice {
        include proxy.conf;
        proxy_set_header Host test.xxxxx.cn;
        proxy_pass http://test.xxxxx.cn;
    }
}

具体文档可以参考:

https://nginx.p2hp.com/en/docs/http/request_processing.html

好了,问题就这样结束了,关注我,下次分享更多的线上问题以及解决方案。

总结

到此这篇关于nginx配置报404问题排查解决的文章就介绍到这了,更多相关nginx配置404解决内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • nginx配置反向代理时遇到的路径问题

    nginx配置反向代理时遇到的路径问题

    这篇文章主要介绍了nginx配置反向代理时遇到的路径问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • nginx反向代理后无限重定向的问题解决方法

    nginx反向代理后无限重定向的问题解决方法

    这篇文章主要为大家介绍了nginx反向代理后无限重定向的问题解决方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • Nginx简介_动力节点Java学院整理

    Nginx简介_动力节点Java学院整理

    Nginx是一个跨平台的Web服务器,可运行在Linux、FreeBSD、Solaris、AIX、Mac OS、Windows等操作系统上,并且它还可以使用当前操作系统特有的一些高效API来提高自己的性能
    2017-08-08
  • 配置Nginx出现403(Forbidden)静态文件加载不出来的解决方法

    配置Nginx出现403(Forbidden)静态文件加载不出来的解决方法

    本文主要介绍了配置Nginx出现403(Forbidden)静态文件加载不出来的解决方法,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-12-12
  • Nginx通过nginx-rtmp-module模块搭建流媒体服务器实现直播

    Nginx通过nginx-rtmp-module模块搭建流媒体服务器实现直播

    近日有客户咨询想用Nginx搭建流媒体服务器实现直播,方便他们打造自己的平台,经过各种测试发现如下文章不错,特分享给需要的朋友
    2023-10-10
  • 使用referer指令配置Nginx服务器来防止图片盗链

    使用referer指令配置Nginx服务器来防止图片盗链

    这篇文章主要介绍了使用referer指令配置Nginx服务器来防止图片盗链的方法,文中也简单介绍了referer指令的一些语法和常用参数,需要的朋友可以参考下
    2015-12-12
  • 安装Windows版nginx及部署前端代码并解决刷新出现404问题

    安装Windows版nginx及部署前端代码并解决刷新出现404问题

    这篇文章主要给大家介绍了关于安装Windows版nginx及部署前端代码解决刷新出现404问题的相关资料,使用nginx部署前端项目是一篇非常详细的教程,旨在帮助初学者使用Nginx来部署前端项目,需要的朋友可以参考下
    2023-12-12
  • Nginx中keepalive配置小结

    Nginx中keepalive配置小结

    本文介绍了Nginx keepalive配置的概念和作用,阐述了keepalive连接的基本原理和优势,并给出了一些常用的配置示例,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • Nginx服务器屏蔽与禁止屏蔽网络爬虫的方法

    Nginx服务器屏蔽与禁止屏蔽网络爬虫的方法

    今天小编就为大家分享一篇关于Nginx服务器屏蔽与禁止屏蔽网络爬虫的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • nginx结合keepalived实现高可用的完整步骤

    nginx结合keepalived实现高可用的完整步骤

    这篇文章主要给大家介绍了关于nginx结合keepalived实现高可用的完整步骤,文中通过示例代码介绍的非常详细,对大家学习或者使用nginx具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12

最新评论