Para redirigir cualquier tráfico HTTP a HTTPS en hosts habilitados para tls, he agregado la siguiente anotación a mis recursos de ingreso
nignx.ingress.kubernetes.io/force-ssl-redirect: trueCon esto, cuando curvo el host en cuestión, me redirigen como se esperaba
Pero cuando uso un navegador, la solicitud de HTTP se agota.
Ahora, no estoy seguro de si es algo que estoy haciendo mal en la configuración de ingreso de Nginx como funciona curl. ¿Algún consejo, por favor? ¡Gracias!
anotaciones completas:
annotations: kubernetes.io/ingress.class: nginx-ingress nginx.ingress.kubernetes.io/force-ssl-redirect: "true" nginx.ingress.kubernetes.io/proxy-body-size: 100m nginx.ingress.kubernetes.io/proxy-connect-timeout: "300" nginx.ingress.kubernetes.io/proxy-read-timeout: "300" nginx.ingress.kubernetes.io/proxy-send-timeout: "300" nginx.ingress.kubernetes.io/ssl-passthrough: "false" nginx.ingress.kubernetes.io/ssl-redirect: "false"normas
rules: - host: hostX http: paths: - backend: serviceName: svcX servicePort: 8080 path: / - host: hostY http: paths: - backend: serviceName: svcX servicePort: 8080 path: / tls: - hosts: - hostX - hosts: - hostY secretName: hostY-secret-tlsNota:
Como @mdaniel ha mencionado, su fragmento muestra nignx.ingress.kubernetes.io/force-ssl-redirect: true , pero las anotaciones deben ser cadenas. Tenga en cuenta que en su configuración "completa", tiene force-ssl-redirect: "true" (ahora correctamente una cadena) y ssl-redirect: "false" .
Simplemente elimine la anotación nginx.ingress.kubernetes.io/ssl-redirect: "false" y deje solo nignx.ingress.kubernetes.io/force-ssl-redirect: "true" También habilite --enable-ssl-passthrough . Esto es necesario para habilitar backends de transferencia en objetos Ingress.
Su anotación debería verse así:
kubernetes.io/ingress.class: nginx-ingress nginx.ingress.kubernetes.io/force-ssl-redirect: "true" nginx.ingress.kubernetes.io/ssl-passthrough: "true" nginx.ingress.kubernetes.io/proxy-body-size: 100m nginx.ingress.kubernetes.io/proxy-connect-timeout: "300" nginx.ingress.kubernetes.io/proxy-read-timeout: "300" nginx.ingress.kubernetes.io/proxy-send-timeout: "300" Si definió hosts en la sección TLS, solo se podrá acceder a ellos mediante https. Las solicitudes HTTP se están redirigiendo para usar HTTPS. Es por eso que no puede acceder al host a través de HTTP. También debe especificar el secreto para el host hostX ; de lo contrario, se usará el certificado predeterminado para el ingreso. O si no desea conectarse al host hostX a través de HTTPS, simplemente cree una entrada diferente sin la sección TLS para ello.