防止NGINX入口响应公共IP

防止NGINX入口响应公共IP,nginx,kubernetes,nginx-ingress,Nginx,Kubernetes,Nginx Ingress,阻止NGINX响应公共IP,或者让它重定向到其他地方(比如另一个URL)的过程是什么 我有点困惑,因为我似乎在任何地方都找不到关于这种情况的文档。我们也在使用证书管理器 本质上,PEN测试失败了,因为公共IP正在使用NGINX/k8s自签名证书进行响应。我们不希望也不需要它 解决这个问题是可能的;HTTP容易,HTTPS难。主要的问题是为IP地址颁发证书,而不是任何颁发者都这样做(例如letsencrypt不这样做),因此您必须找到一个证书或尝试您现在使用的证书 要处理未知主机(如IP地址),您

阻止NGINX响应公共IP,或者让它重定向到其他地方(比如另一个URL)的过程是什么

我有点困惑,因为我似乎在任何地方都找不到关于这种情况的文档。我们也在使用证书管理器


本质上,PEN测试失败了,因为公共IP正在使用NGINX/k8s自签名证书进行响应。我们不希望也不需要它

解决这个问题是可能的;HTTP容易,HTTPS难。主要的问题是为IP地址颁发证书,而不是任何颁发者都这样做(例如letsencrypt不这样做),因此您必须找到一个证书或尝试您现在使用的证书

要处理未知主机(如IP地址),您可以创建一个入口对象,而不需要规则中的
host
字段。这将使创建的入口作为“默认”或“回退”规则工作,因此,当没有更好的匹配by
Host
标头时(规则中有
Host
的任何入口),将使用它

要创建入口对象,您需要一个服务,下面是如何创建没有端点的虚拟服务:

apiVersion:v1 种类:服务 元数据: 名称:虚拟服务 规格: 集群:无 接下来,它的入口:

apiVersion:networking.k8s.io/v1beta1 种类:入口 元数据: 名称:默认入口 注释: kubernetes.io/ingres\u类:nginx nginx.ingres.kubernetes.io/configuration-snippet:| #Nginx将把它放在服务器块中 #您可以将所有请求重定向到某个位置: 返回301https://example.com/; #或者只是: #返回403; 规格: 规则: #此规则没有“主机”字段,因此 #NGINX不会在中包含“server\u name”指令 #vhost配置。这意味着 #仅当请求被拒绝时,才会使用入口规则 #带有“主机”头,没有 #特定规则(例如IP地址)。 -http: 路径: -后端: 服务端口:80 serviceName:虚拟服务 此时,您已经有了针对HTTP和HTTPS的重定向(或403),尽管后者使用了一个虚拟证书。如果您成功地为您的IP地址颁发了一个证书并将其保存为机密,那么下一步就是让NGINX使用它,而不是它的默认虚拟证书。为此,您需要通过添加
--默认ssl证书
参数来修改入口控制器部署:

apiVersion:apps/v1 种类:部署 元数据: 名称:ingress nginx控制器 规格: 模板: 规格: 容器: -姓名:控制器 args: -/nginx入口控制器 #使用“namespace/secret\u name”作为参数的值 ---默认ssl证书=默认/ip证书机密 现在NGINX将使用有效证书响应IP地址

奖金:如果您有一个证书管理器
颁发者
群集颁发者
,可以为IP地址颁发证书(如自签名证书),您可以请求具有以下清单的证书:

#apiVersion:cert-manager.io/v1
apiVersion:cert-manager.io/v1beta1
种类:证书
元数据:
名称:ip证书
规格:
机密名称:ip证书机密
持续时间:2160小时90天
更新时间:360h#15d
isCA:错
私钥:
算法:RSA
编码:PKCS1
尺寸:2048
用途:
-服务器身份验证
-客户端身份验证
通用名称:Dummy
IP地址:
-10.1.1.13#填写清单
问题参考:
名称:#插入发卡机构名称
种类:#发行人或集团发行人
组:cert-manager.io

只需将证书管理器配置为使用lets加密