
# 为Nginx Ingress配置客户端IP地址限制
使用Nginx Ingress时，您可以通过以下annotation限制访问的客户端IP：
- nginx.ingress.kubernetes.io/whitelist-source-range：允许访问的客户端IP范围，支持IP地址或CIDR地址块，多个地址以英文半角逗号（,）分隔。
- nginx.ingress.kubernetes.io/denylist-source-range：禁止访问的客户端IP范围，支持IP地址或CIDR地址块，多个地址以英文半角逗号（,）分隔。
#### 配置IP地址限制
1. 请参见[通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)，使用kubectl连接集群。
2. 创建名为"**ingress-test.yaml** "的YAML文件，此处文件名可自定义。
   
   ```
   vi ingress-test.yaml
   ```
   允许访问的示例如下：
   ```
   apiVersion: networking.k8s.io/v1
   kind: Ingress 
   metadata: 
     name: ingress-test
     namespace: default
     annotations:
       nginx.ingress.kubernetes.io/whitelist-source-range: "192.168.1.0/24"  # 允许访问的客户端IP范围
   spec:
     rules:
       - host: ''
         http:
           paths:
             - path: /
               backend:
                 service:
                   name: <your_service_name>  #替换为您的目标服务名称
                   port:
                     number: <your_service_port>  #替换为您的目标服务端口
               property:
                 ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
               pathType: ImplementationSpecific
     ingressClassName: nginx
   ```
   禁止访问的示例如下：
   ```
   apiVersion: networking.k8s.io/v1
   kind: Ingress 
   metadata: 
     name: ingress-test
     namespace: default
     annotations:
       nginx.ingress.kubernetes.io/denylist-source-range: "10.0.0.0/24"  # 禁止访问的客户端IP范围
   spec:
     rules:
       - host: ''
         http:
           paths:
             - path: /
               backend:
                 service:
                   name: <your_service_name>  #替换为您的目标服务名称
                   port:
                     number: <your_service_port>  #替换为您的目标服务端口
               property:
                 ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
               pathType: ImplementationSpecific
     ingressClassName: nginx
   ```
   
   
3. 创建Ingress。 
   ```
   kubectl create -f ingress-test.yaml
   ```
   回显类似如下，表示Ingress服务已创建。
   ```
   ingress.networking.k8s.io/ingress-test created
   ```
   
   
4. 查看已创建的Ingress。 
   ```
   kubectl get ingress
   ```
   回显如下，表示Ingress服务创建成功。
   ```
   NAME          CLASS   HOSTS     ADDRESS          PORTS   AGE
   ingress-test  nginx   *         121.**.**.**     80      10s
   ```
   
   
5. 测试访问Ingress。如果配置了示例中允许访问的annotation，则只有192.168.1.0/24网段内IP可以正常访问，其他IP会收到403 Forbidden响应；如果配置了示例中禁止访问的annotation，则10.0.0.0/24网段内IP无法访问，其他IP可以正常访问。
 
