限速
这些注释定义了可由单个客户端IP地址打开的连接的限制。这可用于缓解DDoS攻击。
- nginx.ingress.kubernetes.io/limit-connections:来自单个IP地址的并发连接数。
- nginx.ingress.kubernetes.io/limit-rps:每秒可从给定IP接受的连接数。
- nginx.ingress.kubernetes.io/limit-rpm:每分钟可从给定IP接受的连接数。
- nginx.ingress.kubernetes.io/limit-rate-after:设置初始金额,在此之后,对客户的进一步传输响应将受到速率限制。
- nginx.ingress.kubernetes.io/limit-rate:每秒从客户接受的请求率。
您可以指定要通过nginx.ingress.kubernetes.io/limit-whitelist注释从速率限制中排除的客户端IP源范围。该值是逗号分隔的CIDR列表。
如果在单个Ingress规则中指定多个注释limit-rpm,则limit-rps优先。
注释nginx.ingress.kubernetes.io/limit-rate,nginx.ingress.kubernetes.io/limit-rate-after定义对客户端的响应传输速率的限制。速率以每秒字节数指定。零值禁用速率限制。根据请求设置限制,因此如果客户端同时打开两个连接,则总速率将是指定限制的两倍。
例子:
$ cat my-ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
annotations:
# nginx.ingress.kubernetes.io/limit-connections: "300"
# nginx.ingress.kubernetes.io/limit-rps: "300"
# nginx.ingress.kubernetes.io/limit-rpm: "300"
nginx.ingress.kubernetes.io/limit-whitelist: "192.168.7.0/24"
spec:
rules:
- host: my.test.com
http:
paths:
- path: /
backend:
serviceName: nginx
servicePort: 80
要为所有Ingress规则全局配置此设置,可以在NGINX ConfigMap中设置limit-rate-after和limit-rate值。如果在入口注释中设置值,则将覆盖全局设置。
$ cat ingress-nginx-nginx-0.22.0/deploy/configmap.yaml
kind: ConfigMap
apiVersion: v1
metadata:
name: nginx-configuration
namespace: ingress-nginx
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
data:
limit-rate-after: "300"
limit-rate-after: "300"
#worker-processes: "4"
#keep-alive: "75"
#keep-alive-requests: "100"
#proxy-next-upstream: "http_502 http_503 http_504"
limit-rate
限制向客户端传输的响应速率。速率以每秒字节数指定。零值禁用速率限制。根据请求设置限制,因此如果客户端同时打开两个连接,则总速率将是指定限制的两倍。
参考文献: http://nginx.org/en/docs/http/ngx_http_core_module.html#limit_rate
limit-rate-after
设置初始量,在此之后,对客户端的响应的进一步传输将受到速率限制。
参考文献: http://nginx.org/en/docs/http/ngx_http_core_module.html#limit_rate_after
参考: