当前位置: 首页> 财经> 访谈 > 谷粒商城实战笔记-nginx问题记录

谷粒商城实战笔记-nginx问题记录

时间:2025/8/10 3:14:49来源:https://blog.csdn.net/epitomizelu/article/details/140993975 浏览次数:0次

记录在使用nginx中遇到的问题。

文章目录

    • 1,网关路由匹配不生效
    • 2,网关路由配置前后顺序导致的问题(非nginx问题)
    • 3,nginx.conf upstream配置缺少端口
    • 4,配置结尾少分号
    • 5, proxy_pass 后跟的服务器 URL 是否以 / 结尾
      • 5.1 `proxy_pass` 后跟URL的结尾
        • 无斜杠结尾的URL
        • 有斜杠结尾的URL
      • 应用场景
      • 5.2 设置Nginx代理的HTTP版本
        • 配置HTTP 1.1

1,网关路由匹配不生效

在网关中配置工具域名来进行路由转发,测试发现并未生效,原因是nginx转发请求会丢失域名信息,需要在nginx的server块配置文件gulimall.conf中配置中重设请求头域名信息,配置如下。

在这里插入图片描述

 	location / {proxy_set_header Host $host;proxy_pass http://gulimall;}

2,网关路由配置前后顺序导致的问题(非nginx问题)

如果将下列配置放在路由配置的最前面,将会出现一些问题。

在这里插入图片描述

路由规则gulimall-index-route使用Host谓词匹配所有以.gulimall.com结尾的请求。

如果这个规则gulimall-index-route放在最前面,可能出现的问题包括:

  1. 匹配优先级问题

    • 路由规则是从上到下匹配的,一旦匹配成功,就不会再考虑下面的规则。如果gulimall-index-route放在最前面,所有.gulimall.com的请求都会被这个规则捕获,即使这些请求的路径可能更适合下面的某个Path谓词规则。
  2. 路径路由失效

    • 由于gulimall-index-route会捕获所有.gulimall.com的请求,其他基于特定API路径(如/api/search/**/api/coupon/**等)的路由规则将不会生效,因为请求在到达这些规则之前已经被gulimall-index-route匹配并路由了。
  3. 服务发现问题

    • 如果gulimall-product服务不能处理所有可能的API请求(例如,它不包含搜索、优惠券、库存等API的实现),那么将所有请求都路由到这个服务将导致错误或不期望的响应。

3,nginx.conf upstream配置缺少端口

重启nginx和网关后,仍然不能正常访问页面,查看nginx日志,发现转发到80端口,而网关是在88端口,说明配置nginx.confupstream配置缺少端口。
在这里插入图片描述

如下图修改之后,即能正常访问。

在这里插入图片描述

4,配置结尾少分号

nginx不能正常工作,查看日志,有如下错误信息。

nginx: [emerg] unexpected "}" in /etc/nginx/conf.d/gulimall.conf:10

在这里插入图片描述

这说明在nginx的配置中,某一行的配置可能缺失了分号,nginx配置规范要求每一行配置要以分号结尾。

在这里插入图片描述

5, proxy_pass 后跟的服务器 URL 是否以 / 结尾

在使用Nginx作为反向代理服务器时,配置的每一个细节都可能影响到代理的效率和行为。

5.1 proxy_pass 后跟URL的结尾

在配置Nginx的proxy_pass指令时,URL的结尾是否包含斜杠/是一个重要的考量点。这将直接影响到被代理服务器接收到的请求路径。

无斜杠结尾的URL

如果代理路径没有以斜杠结尾,例如设置为/hello,当Nginx接收到URL请求https://nginx_server_name/hello/world时,被代理的服务器将会收到完整的请求路径/hello/world

有斜杠结尾的URL

相对地,如果代理路径以斜杠结尾,如/hello/,被代理服务器收到的请求路径将会是/world。这是因为Nginx会将代理路径后面的部分(/hello/)从原始请求URL中剥离。

应用场景

选择哪种方式取决于应用场景。如果希望在同一个域名下通过不同的路径来分配不同的应用程序,推荐使用以斜杠结尾的代理路径。这样,每个应用程序可以独立地处理进入的请求,而无需处理前缀。

5.2 设置Nginx代理的HTTP版本

Nginx的代理模块默认使用HTTP 1.0版本。然而,在某些情况下,你需要将代理的HTTP版本设置为1.1,以支持更现代的HTTP特性,如持久连接。

配置HTTP 1.1

要设置Nginx代理使用HTTP 1.1,你可以在配置文件中添加以下指令:

proxy_http_version 1.1;
proxy_set_header Connection "";

这两条指令指示Nginx在代理请求时使用HTTP 1.1协议,并且通过清除Connection头部来确保与上游服务器的连接可以被适当地管理。

关键字:谷粒商城实战笔记-nginx问题记录

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: