使用 ConfigMap 为 nginx-ingress 禁用 HSTS
Disable HSTS for nginx-ingress using ConfigMap
我已经尝试过其他相关解决方案,但似乎无法正常工作,我确定这只是命名空间问题或其他问题,因为这是我第一次使用 ConfigMaps,但有人可以帮忙吗我来解决为什么这不起作用?
这是我的入口:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: brushfire-ingress
labels:
helm.sh/chart: brushfire-0.1.0
app.kubernetes.io/name: brushfire
app.kubernetes.io/instance: brushfire
app.kubernetes.io/version: "1.16.0"
app.kubernetes.io/managed-by: Helm
annotations:
cert-manager.io/cluster-issuer: brushfire-issuer
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
tls:
- hosts:
- "brushfire.online"
- "*.brushfire.online"
secretName: tls-secret
rules:
- host: "brushfire.online"
http:
paths:
- path: /(.*)
backend:
serviceName: brushfire
servicePort: 80
- host: "*.brushfire.online"
http:
paths:
- path: /(.*)
backend:
serviceName: brushfire
servicePort: 80
这是作为与 --namespace jorin-ssl
一起安装的 helm chart 的一部分安装的
我试过的ConfigMap是:
kind: ConfigMap
apiVersion: v1
metadata:
labels:
app: brushfire-ingress
name: nginx-configuration
namespace: ingress-nginx # I've also tried `jorin-ssl`
data:
hsts: "false"
但最终,HSTS 似乎总是存在:
$ curl -s -D- https://brushfire.online/ | grep -i Strict
returns
strict-transport-security: max-age=15724800; includeSubDomains
为简单起见,我很乐意在完全不使用 ConfigMap 的情况下执行此操作。有没有办法像我们使用 force-ssl-redirect
等那样使用注释来做到这一点?
ConfigMap 的名称必须与 nginx-ingress 控制器进程正在查找的名称相匹配。
nginx-ingress 进程将使用命令行上的 --configmap
参数来设置名称。此选项将在您的部署 yaml 中包含的容器规范中提供。
例如helm部署使用full name of the controller作为--configmap
选项。
我已经尝试过其他相关解决方案,但似乎无法正常工作,我确定这只是命名空间问题或其他问题,因为这是我第一次使用 ConfigMaps,但有人可以帮忙吗我来解决为什么这不起作用?
这是我的入口:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: brushfire-ingress
labels:
helm.sh/chart: brushfire-0.1.0
app.kubernetes.io/name: brushfire
app.kubernetes.io/instance: brushfire
app.kubernetes.io/version: "1.16.0"
app.kubernetes.io/managed-by: Helm
annotations:
cert-manager.io/cluster-issuer: brushfire-issuer
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
tls:
- hosts:
- "brushfire.online"
- "*.brushfire.online"
secretName: tls-secret
rules:
- host: "brushfire.online"
http:
paths:
- path: /(.*)
backend:
serviceName: brushfire
servicePort: 80
- host: "*.brushfire.online"
http:
paths:
- path: /(.*)
backend:
serviceName: brushfire
servicePort: 80
这是作为与 --namespace jorin-ssl
我试过的ConfigMap是:
kind: ConfigMap
apiVersion: v1
metadata:
labels:
app: brushfire-ingress
name: nginx-configuration
namespace: ingress-nginx # I've also tried `jorin-ssl`
data:
hsts: "false"
但最终,HSTS 似乎总是存在:
$ curl -s -D- https://brushfire.online/ | grep -i Strict
returns
strict-transport-security: max-age=15724800; includeSubDomains
为简单起见,我很乐意在完全不使用 ConfigMap 的情况下执行此操作。有没有办法像我们使用 force-ssl-redirect
等那样使用注释来做到这一点?
ConfigMap 的名称必须与 nginx-ingress 控制器进程正在查找的名称相匹配。
nginx-ingress 进程将使用命令行上的 --configmap
参数来设置名称。此选项将在您的部署 yaml 中包含的容器规范中提供。
例如helm部署使用full name of the controller作为--configmap
选项。