nginx转发ingress-nginx问题记录

news2024/9/21 14:51:48

背景

想直接通过域名访问k8s上的服务. 想到k8s上可以直接通过ingress配置. 不过ingress默认启动的端口3xxxxx. 一般不可能让用户访问我们的服务加上端口. 所以现在要解决直接通过80端口访问ingress的问题.

方案

  1. 修改ingress-nginx端口(这个是在网上搜到的方案, 但未选择)

这个要修改k8s配置, 默认k8s上服务是不能开80端口的

  1. 直接在服务器通过docker部署个nginx 80端口, 然后配置这个nginx将所有流量转发到ingress-nginx.

执行过程中遇到的问题:

  • 通过ingress配置转发到后端 – 正常
  • 通过nginx转发到ingress – 正常
  • 通过nginx转发到ingress, 再通过ingress转发到后端 --异常

举个例子: 我ingress 端口是30181, 服务端口是30444(服务有接口/admin), 额外部署的nginx端口80. 域名abc.cn 解析到nginx所在到IP
访问 -> abc.cn:30181 – 正常,直接到了ingress
访问 -> abc.cn:30181/admin – 返回200(正常,通过ingress转发到了服务)
访问 -> abc.cn – 正常,通过nginx转发到了ingress
访问 -> abc.cn/admin – 返回404. 异常, 预期返回200.
通过查看nginx的access.log. 这个请求通过额外部署的nginx转发到了30181端口. 但是查看ingress-nginx的日志, 请求没有进来.

额外部署的nignx 配置如下

  server {
      listen 80;
      server_name abc.cn;
      #server_name _;
      location / {
          proxy_pass http://172.17.0.1:30181;
      }
    }

ingress配置如下
在这里插入图片描述

问题解决:
将 proxy_pass http://172.17.0.1:30181; 改成 proxy_pass http://abc.cn:30181;

原因是ingress转发/admin的条件是servername必须是域名abc.cn (即这里host设置的域名)

由于我这个nginx是通过docker部署的, 还需要再配置下docker容器的dns. 不然我这不能解析成功. (我把原来的nginx删了重新run , 指定了自己的新的resolv.conf

docker run -d -p 80:80 --name nginx --privileged=true -v /cloud/nginx/nginx.conf:/etc/nginx/nginx.conf -v /cloud/nginx/html:/etc/nginx/html -v /cloud/nginx/log:/var/log/nginx -v /cloud/nginx/resolv.conf:/etc/resolv.conf nginx

resolv.conf内容如下

root@f2ee61c77992:/# cat etc/resolv.conf 
nameserver 114.114.114.114
nameserver 8.8.8.8

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1325619.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C/C++ string.h库中的memcpy()和memmove()

不能把一个数组赋给另一个数组,所以要通过循环把数组中的每个元素赋给另一个数组相应的元素。有一个例外的情况是:使用strcpy()和strncpy()函数来处理字符数组。 memcpy()和memmove()函数提供类似的方法处理任意类型的数组,下面是这两个寒素的…

idea插件在线和离线安装

在线安装 idea在线安装插件比较简单明了,打开setting(或者快捷键ctrlalts),找到plugins查找要安装的插件,点击安装,重启idea 离线安装 在官网下载插件安装包 jetbrains官网插件地址 打开idea&#xff0c…

使用HTTP协议有哪些风险?HTTP与HTTPS的区别是什么

作为两种常见的网络协议,HTTP和HTTPS都是用于在浏览器和服务器之间传输数据的。然而在保障数据安全性方面,HTTPS远远优于HTTP。在网络安全愈发重要的当下,HTTP协议的不安全性使得其逐渐被淘汰弃用。那么使用HTTP协议有哪些风险呢?…

在mt5上哪里可以添加指数品种?

在MT5交易平台上,您可以通过以下步骤添加指数品种(如股票指数、商品指数等)到您的市场观察窗口中: Exness手机登录平台学习指南 步骤一:打开市场观察窗口: 打开MT5交易平台。 在左侧的“市场观察”窗口中&…

c语言:指针作为参数传递

探究实参与形参它们相互独立 由于主调函数的变量a,b与被调函数的形参x,y它们相互独立。函数 swap 可以修改变量x,y,但是却无法影响到主调函数中的a,b。 现在利用取地址运算符,分别打印它们的首地址&#x…

【PHP入门】2.2 流程控制

-流程控制- 流程控制:代码执行的方向 2.2.1控制分类 顺序结构:代码从上往下,顺序执行。(代码执行的最基本结构) 分支结构:给定一个条件,同时有多种可执行代码(块)&am…

抖音达人筛选需要注意什么,投放总结

商家想要在抖音开拓市场,带动产品销路,寻找达人投放是必行之道。那么抖音达人筛选需要注意什么,我们为大家总结了如下流程。 一、以基础数据找达人 以基础数据进行抖音达人筛选,可以称得上是很直接的方法了。这里的接触数据包括粉…

安防视频融合云平台/智慧监控平台EasyCVR如何添加验证码调用接口?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

机器学习 | 聚类Clustering 算法

物以类聚人以群分。 什么是聚类呢? 1、核心思想和原理 聚类的目的 同簇高相似度 不同簇高相异度 同类尽量相聚 不同类尽量分离 聚类和分类的区别 分类 classification 监督学习 训练获得分类器 预测未知数据 聚类 clustering 无监督学习,不关心类别标签 …

红队打靶练习:WINTERMUTE: 1

前言 网络扫描(Nmap、netdiscover) HTTP 服务枚举 使用电子邮件日志文件在浏览器中进行目录遍历 利用 SMTP RCPT 选项中的操作系统命令注入 生成 PHP 后门 (Msfvenom) 执行RCPT选项中嵌入的后门 反向连接(Metasploit) 导入 pytho…

C++_动态二维数组的两种方法

介绍 本文主要介绍使用 动态二维数组的两种方法 (PS:仅作创建 动态二维数组参考,详细使用方法根据需求自行改变) 第一种:连续存储结构的 二维动态数组(需固定 列 大小,可通过下标访问) 缺点: 1.需要在设计二维数组前写死 列 的大小 2.空间利用率不高 优点…

armv8-a发展历程

ARMv8-A 架构是针对应用配置文件的最新一代 ARM 架构。ARMv8 这个名称用于描述整体架构,现在包括 32 位执行和 64 位执行。它引入了使用 64 位宽寄存器执行执行的能力,同时保留了与现有 ARMv7 软件的向后兼容性。 ARMv8-A 架构引入了许多变化&#xff0c…

深入理解网络 I/O:FileOutputStream、BufferFileOutputStream、ByteBuffer

🔭 嗨,您好 👋 我是 vnjohn,在互联网企业担任 Java 开发,CSDN 优质创作者 📖 推荐专栏:Spring、MySQL、Nacos、Java,后续其他专栏会持续优化更新迭代 🌲文章所在专栏&…

BEVFusion-mit复现与实践(nuscenes-mini数据集)

目录 一、CUDA版本11.1二、创建虚拟环境并激活三、安装pytorch四、安装openmpi五、安装功能包六、源码下载七、参数修改与编译八、配置nuscenes-mini九、复现十、实践 一、CUDA版本11.1 二、创建虚拟环境并激活 conda create -n bevfusion python3.8 conda activate bevfusio…

C# NPOI导出dataset----Excel绘制Chart图表

仅限XLSX 2007以后版本(2007之前版本不支持) 1、判断文件夹是否存在,不存在则创建 //Application.StartupPath当前项目根目录 if (!Directory.Exists(Application.StartupPath "\Excel")) { …

高通平台开发系列讲解(USB篇)adb应用adbd分析

沉淀、分享、成长,让自己和他人都能有所收获!😄 在apps_proc/system/core/adb/adb_main.cpp文件中main()函数会调用adb_main()函数,然后调用uab_init函数 在uab_init()函数中,会创建一个线程,在线程中会调用init_functionfs()函数,利用ep0控制节点,创建ep1、ep2输…

Git报错x509: certificate signed by unknown authority

下载报错: Error downloading object: model-00001-of-00008.safetensors (ed3ac49): Smudge error: Error downloading model-00001-of-00008.safetensors (ed3ac4983f682a999b0e4b6f072aad294c4fd9a7e968e90835ba5c4b466d3c7c): LFS: Get https://cdn-lfs.huggin…

可定制化的企业电子招标采购系统源码

随着企业的快速发展,招采管理逐渐成为企业运营中的重要环节。为了满足公司对内部招采管理提升的要求,建立一个公平、公开、公正的采购环境至关重要。在这个背景下,我们开发了一款电子招标采购软件,以最大限度地控制采购成本&#…

maven限制内存使用峰值/最大内存

前言 通过设置虚拟机的内存大小,达到限制maven内存使用峰值的效果 方法1:修改mvn脚本 找到mvn脚本在MAVEN_OPTS参数值添加-Xms、-Xmx参数:MAVEN_OPTS"$MAVEN_OPTS -Xms512m -Xmx512m"效果图 windows系统下修改MAVEN_OPTS参数 …

31 在Vue3中如何使用slot插槽

概述 插槽在真实的开发中使用非常的多,比如我们去用一些第三方组件库的时候,通常都需要通过自定义插槽来实现内容的自定义。 在Vue3中使用插槽非常的简单。 插槽相当于在组件中给你预留一块位置,你可以将自己的vue3相关的代码插入到这个位…