This is an automated email from the ASF dual-hosted git repository.

kayx23 pushed a commit to branch v2.1.0
in repository https://gitbox.apache.org/repos/asf/apisix-ingress-controller.git


The following commit(s) were added to refs/heads/v2.1.0 by this push:
     new da632fa3 docs: update 2.1 listener port guidance (#2787)
da632fa3 is described below

commit da632fa3988d81ca01cf735d44d6de2cf539b44c
Author: Traky Deng <[email protected]>
AuthorDate: Wed Jun 10 16:16:48 2026 +0800

    docs: update 2.1 listener port guidance (#2787)
---
 docs/en/latest/getting-started/configure-routes.md   |  4 ++--
 docs/en/latest/getting-started/key-authentication.md |  2 +-
 docs/en/latest/getting-started/load-balancing.md     |  2 +-
 docs/en/latest/getting-started/rate-limiting.md      |  2 +-
 docs/en/latest/reference/example.md                  |  2 +-
 docs/en/latest/reference/troubleshoot.md             | 11 +++++++++++
 6 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/docs/en/latest/getting-started/configure-routes.md 
b/docs/en/latest/getting-started/configure-routes.md
index 0bafd822..68f290da 100644
--- a/docs/en/latest/getting-started/configure-routes.md
+++ b/docs/en/latest/getting-started/configure-routes.md
@@ -42,7 +42,7 @@ This tutorial guides you through creating a Route using the 
APISIX Ingress Contr
 Install the httpbin example application on the cluster to test the 
configuration:
 
 ```bash
-kubectl apply -f 
https://raw.githubusercontent.com/apache/apisix-ingress-controller/refs/heads/v2.0.0/examples/httpbin/deployment.yaml
+kubectl apply -f 
https://raw.githubusercontent.com/apache/apisix-ingress-controller/refs/heads/v2.1.0/examples/httpbin/deployment.yaml
 ```
 
 ## Configure a Route
@@ -86,7 +86,7 @@ spec:
       name: apisix-config
 ```
 
-Note that the `port` in the Gateway listener is required but ignored. This is 
due to limitations in the data plane: it cannot dynamically open new ports. 
Since the Ingress Controller does not manage the data plane deployment, it 
cannot automatically update the configuration or restart the data plane to 
apply port changes.
+The `port` in the Gateway listener can be used for route matching based on 
[`listener_port_match_mode`](../reference/configuration-file.md) (`auto`, 
`explicit`, or `off`). The controller cannot dynamically open new ports on the 
data plane, so ensure APISIX is configured to listen on the port.
 
 </details>
 
diff --git a/docs/en/latest/getting-started/key-authentication.md 
b/docs/en/latest/getting-started/key-authentication.md
index 51e0bc71..a9ecae99 100644
--- a/docs/en/latest/getting-started/key-authentication.md
+++ b/docs/en/latest/getting-started/key-authentication.md
@@ -76,7 +76,7 @@ spec:
       name: apisix-config
 ```
 
-Note that the `port` in the Gateway listener is required but ignored. This is 
due to limitations in the data plane: it cannot dynamically open new ports. 
Since the Ingress Controller does not manage the data plane deployment, it 
cannot automatically update the configuration or restart the data plane to 
apply port changes.
+The `port` in the Gateway listener can be used for route matching based on 
[`listener_port_match_mode`](../reference/configuration-file.md) (`auto`, 
`explicit`, or `off`). The controller cannot dynamically open new ports on the 
data plane, so ensure APISIX is configured to listen on the port.
 
 </details>
 
diff --git a/docs/en/latest/getting-started/load-balancing.md 
b/docs/en/latest/getting-started/load-balancing.md
index 15f17f74..a4b47db5 100644
--- a/docs/en/latest/getting-started/load-balancing.md
+++ b/docs/en/latest/getting-started/load-balancing.md
@@ -76,7 +76,7 @@ spec:
       name: apisix-config
 ```
 
-Note that the `port` in the Gateway listener is required but ignored. This is 
due to limitations in the data plane: it cannot dynamically open new ports. 
Since the Ingress Controller does not manage the data plane deployment, it 
cannot automatically update the configuration or restart the data plane to 
apply port changes.
+The `port` in the Gateway listener can be used for route matching based on 
[`listener_port_match_mode`](../reference/configuration-file.md) (`auto`, 
`explicit`, or `off`). The controller cannot dynamically open new ports on the 
data plane, so ensure APISIX is configured to listen on the port.
 
 </details>
 
diff --git a/docs/en/latest/getting-started/rate-limiting.md 
b/docs/en/latest/getting-started/rate-limiting.md
index 6a3a804f..d76ffd05 100644
--- a/docs/en/latest/getting-started/rate-limiting.md
+++ b/docs/en/latest/getting-started/rate-limiting.md
@@ -76,7 +76,7 @@ spec:
       name: apisix-config
 ```
 
-Note that the `port` in the Gateway listener is required but ignored. This is 
due to limitations in the data plane: it cannot dynamically open new ports. 
Since the Ingress Controller does not manage the data plane deployment, it 
cannot automatically update the configuration or restart the data plane to 
apply port changes.
+The `port` in the Gateway listener can be used for route matching based on 
[`listener_port_match_mode`](../reference/configuration-file.md) (`auto`, 
`explicit`, or `off`). The controller cannot dynamically open new ports on the 
data plane, so ensure APISIX is configured to listen on the port.
 
 </details>
 
diff --git a/docs/en/latest/reference/example.md 
b/docs/en/latest/reference/example.md
index b828dd9a..318770bc 100644
--- a/docs/en/latest/reference/example.md
+++ b/docs/en/latest/reference/example.md
@@ -96,7 +96,7 @@ spec:
 
 ❶ The controller name should be customized if you are running multiple 
distinct instances of the APISIX Ingress Controller in the same cluster (not a 
single instance with multiple replicas). Each ingress controller instance must 
use a unique controllerName in its [configuration file](configuration-file.md), 
and the corresponding GatewayClass should reference that value.
 
-❷ The `port` in the Gateway listener is used for routing matching based on 
`listener_port_match_mode` in the controller configuration (`auto`, `explicit`, 
or `off`). The controller cannot dynamically open new ports on the data plane, 
so ensure APISIX is configured to listen on the port.
+❷ The `port` in the Gateway listener is used for routing matching based on 
[`listener_port_match_mode`](configuration-file.md) (`auto`, `explicit`, or 
`off`). The controller cannot dynamically open new ports on the data plane, so 
ensure APISIX is configured to listen on the port.
 
 ❸ API group of the referenced resource.
 
diff --git a/docs/en/latest/reference/troubleshoot.md 
b/docs/en/latest/reference/troubleshoot.md
index 5c8fdaed..d5df1c54 100644
--- a/docs/en/latest/reference/troubleshoot.md
+++ b/docs/en/latest/reference/troubleshoot.md
@@ -54,3 +54,14 @@ curl "http://127.0.0.1:9180/apisix/admin/routes"; -H 
"X-API-KEY: ${ADMIN_API_KEY}
 ```
 
 For reference, see [Admin 
API](https://apisix.apache.org/docs/apisix/admin-api/).
+
+## Gateway API Routes Return 404 After Upgrade
+
+After upgrading to APISIX Ingress Controller 2.1.0, Gateway API HTTPRoute or 
GRPCRoute resources may return `404`. This can happen when Gateway listener 
ports do not match the ports that APISIX actually listens on.
+
+In the default `listener_port_match_mode: auto` mode, the Ingress Controller 
may inject a `server_port` route variable from the matched Gateway listener 
ports. The `server_port` variable is evaluated by APISIX against its actual 
listening port, such as `9080` or `9443`. If the Gateway listener uses `80` or 
`443` but the gateway Service maps those ports to `9080` or `9443`, the route 
may not match.
+
+To resolve the issue, use one of the following approaches:
+
+- Set [`listener_port_match_mode`](configuration-file.md) to `"off"` in the 
controller configuration to disable `server_port` route-var injection.
+- Configure APISIX to listen on the same ports declared in the Gateway 
listeners.

Reply via email to