当前位置: 首页 > news >正文

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

记录在使用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头部来确保与上游服务器的连接可以被适当地管理。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 服务器测试之RAID知识梳理
  • MySQL的三大关键日志:Bin Log、Redo Log与Undo Log
  • 【开端】JAVA Mono<Void>向前端返回没有登陆或登录超时 暂无权限访问信息组装
  • Zookeeper的监听机制及原理解析
  • 算法【前缀和与差分】
  • LeNet5模型搭建
  • 华为OD-D卷小明找位置
  • 学习记录(9):Prompt提示词技巧
  • source insight 3.5快捷键合集
  • 模板方法模式(Template Method Pattern)
  • 三数之和-Leetcode
  • 深入理解 Vuex:Vue.js 应用的状态管理
  • 《最新出炉》系列小成篇-Python+Playwright自动化测试-66 - 等待元素至指定状态(出现、移除、显示和隐藏)
  • mysql数据库:SQL语言基础和基本查询
  • 黑马Java零基础视频教程精华部分_16_递归算法
  • 【React系列】如何构建React应用程序
  • 230. Kth Smallest Element in a BST
  • egg(89)--egg之redis的发布和订阅
  • JS学习笔记——闭包
  • Just for fun——迅速写完快速排序
  • leetcode-27. Remove Element
  • MD5加密原理解析及OC版原理实现
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • PHP 7 修改了什么呢 -- 2
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Python爬虫--- 1.3 BS4库的解析器
  • uva 10370 Above Average
  • 笨办法学C 练习34:动态数组
  • 给新手的新浪微博 SDK 集成教程【一】
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 无服务器化是企业 IT 架构的未来吗?
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 原生Ajax
  • 【干货分享】dos命令大全
  • 关于Android全面屏虚拟导航栏的适配总结
  • ​14:00面试,14:06就出来了,问的问题有点变态。。。
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​比特币大跌的 2 个原因
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • ###C语言程序设计-----C语言学习(6)#
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • $.ajax()方法详解
  • (1)(1.9) MSP (version 4.2)
  • (10)ATF MMU转换表
  • (2)从源码角度聊聊Jetpack Navigator的工作流程
  • (C++20) consteval立即函数
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (八)Flask之app.route装饰器函数的参数
  • (二)学习JVM —— 垃圾回收机制
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (淘宝无限适配)手机端rem布局详解(转载非原创)