You need to enable JavaScript to run this app.
文档中心
容器服务

容器服务

复制全文
下载 pdf
Nginx Ingress
通过 kubectl 创建 Nginx Ingress
复制全文
下载 pdf
通过 kubectl 创建 Nginx Ingress
容器服务提供基于社区版的 Nginx Ingress Controller,它将 Ingress 规则转换成 Nginx 的配置,并基于 Nginx 来进行七层的流量转发。本文为您介绍如何通过 YAML 配置 Nginx Ingress。
注意
Nginx Ingress 功能即将下线,详情请参见 【产品公告】NGINX Ingress 停止维护公告
前提条件
操作步骤
基于域名转发
Nginx Ingress 支持将不同的域名访问,转发到不同的后端。
  1. 创建 Ingress 的 YAML 文件,示例nginx-ingress.yaml代码如下:
  • apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
    name: nginx-ingress # 路由规则的名称
    namespace: default # 路由规则所属的命名空间
    spec:
    ingressClassName: nginx # 指定 Ingress Controller
    rules:
    - host: first.example.com # 需要对外提供访问的域名
    http:
    paths:
    - pathType: Prefix # 路径匹配规则,默认为 Prefix(前缀匹配)
    path: / # 请求匹配的路径
    backend:
    service:
    name: service-demo-a # 需要对接的服务名称
    port:
    number: 80 # 需要对接服务的端口号
    - host: second.example.com # 需要对外提供访问的域名
    http:
    paths:
    - pathType: Prefix # 路径匹配规则。取值:Exact(精确匹配)、Prefix(前缀匹配)
    path: / # 请求匹配的路径
    backend:
    service:
    name: service-demo-b # 需要对接的服务名称
    port:
    number: 80 # 需要对接服务的端口号
  1. 执行以下命令,创建 Ingress。
  • kubectl apply -f nginx-ingress.yaml
基于路径转发
Nginx Ingress 支持将相同域名、不同路径的访问,转发到不同的后端。
  1. 创建 Ingress 的 YAML 文件,示例nginx-ingress.yaml代码如下:
  • apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
    name: nginx-ingress # 路由规则的名称
    namespace: default # 路由规则所属的命名空间
    spec:
    ingressClassName: nginx # 指定 Ingress Controller
    rules:
    - host: example.com # 需要对外提供访问的域名
    http:
    paths:
    - path: /foo # 请求匹配的路径
    pathType: Prefix # 路径匹配规则,默认为 Prefix(前缀匹配)
    backend:
    service:
    name: service-demo-a # 需要对接的服务名称
    port:
    number: 80 # 需要对接服务的端口号
    - path: /bar # 请求匹配的路径
    pathType: Prefix # 路径匹配规则,默认为 Prefix(前缀匹配)
    backend:
    service:
    name: service-demo-b # 需要对接的服务名称
    port:
    number: 80 # 需要对接服务的端口号
  1. 执行以下命令,创建 Ingress。
  • kubectl apply -f nginx-ingress.yaml
使用自定义 Nginx Ingress Controller
容器服务支持在集群中同时部署多套独立的 Nginx Ingress Controller 服务,详情请参见 部署多套 Nginx Ingress Controller
您可以基于实际业务需求或场景,使用不同的 Nginx Ingress Controller 对外提供不同的服务访问。配置步骤如下:
  1. 创建 Ingress 的 YAML 文件,示例nginx-ingress.yaml代码如下。其中,在spec.ingressClassName字段中使用名称指定 Nginx Ingress Controller 服务。本例中以user-ingress-nginx为例。
  • apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
    name: ingress-demo # ingress 的名称
    namespace: default # ingress 所在的命名空间
    spec:
    ingressClassName: user-ingress-nginx # 自定义的 Nginx Ingress Controller 名称
    rules:
    - host: example.com # 外部访问的域名
    http:
    paths:
    - pathType: Prefix
    path: /
    backend:
    service:
    name: service-demo # ingress 后端对接的服务名称
    port:
    number: 80 # ingress 对接服务的端口号
  1. 执行以下命令,创建应用和服务。
  • kubectl apply -f nginx-ingress.yaml
结果验证
查看配置
执行以下命令,查看 ingress 配置。
kubectl get ingress
预期返回结果如下,表示 Ingress 创建成功。其中180.xxx.xxx.xxx为 Nginx Ingress 对应 CLB 的公网或私网 IP 地址。
NAME CLASS HOSTS ADDRESS PORTS AGE
nginx-ingress nginx example.com 180.xxx.xxx.xxx 80 74s
访问服务
使用以下命令,通过域名访问服务。
curl -H "Host: example.com" http://180.xxx.xxx.xxx
预期输出如下,表示可以通过域名访问到后端服务。
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
最近更新时间:2026.04.07 14:29:43
这个页面对您有帮助吗?
有用
有用
无用
无用