防止NGINX入口响应公共IP
阻止NGINX响应公共IP,或者让它重定向到其他地方(比如另一个URL)的过程是什么 我有点困惑,因为我似乎在任何地方都找不到关于这种情况的文档。我们也在使用证书管理器防止NGINX入口响应公共IP,nginx,kubernetes,nginx-ingress,Nginx,Kubernetes,Nginx Ingress,阻止NGINX响应公共IP,或者让它重定向到其他地方(比如另一个URL)的过程是什么 我有点困惑,因为我似乎在任何地方都找不到关于这种情况的文档。我们也在使用证书管理器 本质上,PEN测试失败了,因为公共IP正在使用NGINX/k8s自签名证书进行响应。我们不希望也不需要它 解决这个问题是可能的;HTTP容易,HTTPS难。主要的问题是为IP地址颁发证书,而不是任何颁发者都这样做(例如letsencrypt不这样做),因此您必须找到一个证书或尝试您现在使用的证书 要处理未知主机(如IP地址),您
本质上,PEN测试失败了,因为公共IP正在使用NGINX/k8s自签名证书进行响应。我们不希望也不需要它 解决这个问题是可能的;HTTP容易,HTTPS难。主要的问题是为IP地址颁发证书,而不是任何颁发者都这样做(例如letsencrypt不这样做),因此您必须找到一个证书或尝试您现在使用的证书 要处理未知主机(如IP地址),您可以创建一个入口对象,而不需要规则中的
host
字段。这将使创建的入口作为“默认”或“回退”规则工作,因此,当没有更好的匹配byHost
标头时(规则中有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加密