You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
NginxGatewayFabric automatically adds the configuration block to server:
if ($ssl_server_name != $host) {
return 421;
}
While redirect from foo.example.com to bar.example.com, IOS browser tries to reuse TLS connection with $host = bar.example.com but $server_name = foo.example.com and returns 421 Mismatch Redirect.
To Reproduce
Steps to reproduce the behavior:
Create gateway resource as shown above
Create HTTPRoutes as shown above
Expected behavior
Nginx Gateway Fabric allows to disable block
if ($ssl_server_name != $host) {
return 421;
}
Your environment
Version of the NGINX Gateway Fabric - 1.5.1
Version of Kubernetes - 1.30.10
Kubernetes platform Bare Metal
The text was updated successfully, but these errors were encountered:
Thanks for opening this issue!
Be sure to check out our Contributing Guidelines and the Issue Lifecycle while you wait for someone on the team to take a look at this.
This is related to an issue that came about from the Gateway API community which is explained here in GEP-3567. I'll reach out to see what the behavioral expectation should be for your case.
You might be able to workaround this by disabling HTTP/2. This can be done in the NginxProxy CRD resource, see this guide for how to configure that resource.
We'll explore the option of having a switch to disable this check and see where we can fit it in our priority list.
Potential acceptance criteria for this ticket:
add a new field (maybe allowTLSConnectionReuse; I think it would live in the NginxProxy configuration) that can be used to disable enforcement of matching Host header and certificate server name.
document the risks of allowing this (per GEP-3567)
Set the OverlappingTLSConfig condition for situations where TLS configuration within a Listener conflicts with TLS configuration in another Listener on the same port
Describe the bug
There are 2 services: foo.example.com and bar.example.com under wildcard certificate *.example.com and Gateway with TLS termination:
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: gateway
spec:
gatewayClassName: nginx
listeners:
port: 80
protocol: HTTP
hostname: *.example.com
allowedRoutes:
namespaces:
from: All
port: 443
protocol: HTTPS
hostname: *.example.com
allowedRoutes:
namespaces:
from: All
tls:
mode: Terminate
certificateRefs:
name: {{ .Values.tlsTerminationSecret }}
For each service created two HTTPRoute manifests. The first for redirect to https and the second for http connection to service:
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: https
spec:
parentRefs:
sectionName: https
hostnames:
rules:
port: 80
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: http
spec:
parentRefs:
sectionName: http
hostnames:
rules:
requestRedirect:
scheme: https
port: 443
NginxGatewayFabric automatically adds the configuration block to server:
While redirect from foo.example.com to bar.example.com, IOS browser tries to reuse TLS connection with $host = bar.example.com but $server_name = foo.example.com and returns 421 Mismatch Redirect.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Nginx Gateway Fabric allows to disable block
if ($ssl_server_name != $host) {
return 421;
}
Your environment
The text was updated successfully, but these errors were encountered: