ingress-nginx 常见参数解释
# 客户端与服务器之间的 Keep-Alive 连接超时时间,单位为秒。在此例中,设置为 30 秒。
keep-alive: "30"
# 设置通过一个保活连接可以处理请求的最长时间
upstream-keepalive-time: "1h"
# 设置通过一个 keepalive 连接可以处理的最大请求数。发出最大请求数后,连接将关闭。默认值: 10000
upstream-keepalive-requests
# 在此期间与上游服务器的空闲保持活动连接将保持打开状态
nginx.ingress.kubernetes.io/upstream-keepalive-timeout
# Nginx 与 上 游 服 务 器 ( 后 端 服 务 ) 之 间 的 keep-alive 连 接 数 。 默认值320
upstream-keepalive-connections: "300"
# Nginx 与客户端(浏览器、客户端应用等)之间的 keep-alive 连接上可以发送的最大请求数。
keep-alive-requests: "10000"
# 设置允许传递给后端服务器的请求主体的最大大小。在这个例子中,最大允许的主体大小为 50MB。
proxy-body-size: 50m
# 设置与后端服务器建立连接的超时时间。在这个例子中,连接超时时间为 600 秒
proxy-connect-timeout: "600"
# 设置从后端服务器读取数据的超时时间。在这个例子中,读取超时时间为 600 秒。
proxy-read-timeout: "600"
# 设置向后端服务器发送数据的超时时间。在这个例子中,发送超时时间为 600 秒。
proxy-send-timeout: "600"
# 指定 Nginx 与上游服务器之间使用的 HTTP 版本
proxy-http-version: "1.1"
# 用于配置在发生上游服务器失败时,Nginx 尝试连接到下一个上游服务器的次数。
proxy-next-upstream-tries: "3"
# 用于配置是否使用请求中的 Forwarded 头部信息。这个头部信息通常包含有关客户端的原始连接信息,如原始 IP 地址、协议等。
use-forwarded-headers: "true"
# 此参数设置每个 worker 进程能够同时处理的最大连接数。在这里,设置为 65536 连接。
max-worker-connections: "65536"
# 此参数设置每个 worker 进程的最大打开文件描述符数。文件描述符用于表示打开的文件、套接字和其他 I/O 资源。在这里,设置为 655350
max-worker-open-files: "655350"
# 此参数控制 worker 进程的 CPU 亲和性。将其设置为 "auto" 表示 Nginx 将根据系统配置自动分配 worker 进程到 CPU。
worker-cpu-affinity: "auto"
# 此参数指定要生成的用于处理传入请求的 worker 进程数量。将其设置为 "auto" 表示 Nginx 将根据系统资源自动确定适当的 worker 进程数量
worker-processes: "auto"
# 当设置为 "false" 时,此参数禁用在服务器响应头中包含 Nginx 版本信息。这是一项安全措施,以限制信息暴露。
server-tokens: "false"
# 此参数设置在无法从文件内容确定 MIME 类型时,Nginx 用于服务文件的默认 MIME 类型。在这里,设置为 "application/octet-stream"。
default-type: "application/octet-stream"
# 全局禁用308重定向
ssl-redirect: "false"
# 控制是否启用 GeoIP 功能。当设置为 "false" 时,禁用 GeoIP。
use-geoip: "false"
# 用于设置服务器名哈希桶的大小
server-name-hash-bucket-size: "128"
# 客户端请求体超时时间,单位为秒。在此例中,设置为 60 秒。
client-body-timeout: "60"
# 客户端请求头缓冲区大小。在此例中,设置为 8k。
client-header-buffer-size: "8k"
# 客户端请求头的大缓冲区配置。在此例中,设置为 4 个缓冲区,每个大小为 32k。
large-client-header-buffers: "4 32k"
# 反向代理请求体的最大尺寸。在此例中,设置为 256 MB。
proxy-body-size: "256m"
# 客户端请求体缓冲区大小。在此例中,设置为 128k。
client-body-buffer-size: "128k"
# HTTP/2 最大并发流的数量。在此例中,设置为 64。
http2-max-concurrent-streams: "64"
# HTTP/2 最大字段大小。在此例中,设置为 16k。
http2-max-field-size: "16k"
# 反向代理连接超时时间,单位为秒。在此例中,设置为 15 秒。
proxy-connect-timeout: "15"
# 反向代理发送超时时间,单位为秒。在此例中,设置为 60 秒。
proxy-send-timeout: "60"
# 反向代理读取超时时间,单位为秒。在此例中,设置为 60 秒。
proxy-read-timeout: "60"
# 反向代理缓冲区大小。在此例中,设置为 128k。
proxy-buffer-size: "128k"
# 关闭代理请求缓冲。默认情况下,Nginx 会缓冲代理请求的请求主体(即请求的正文内容),直到接收完整的请求后再将其发送给后端服务器。通过将此设置为 off,Nginx 将立即将请求主体转发给后端服务器,适用于需要实时转发请求主体的场景,比如 SSE(Server-Sent Events)。
proxy-request_buffering off;
# 关闭代理缓冲。默认情况下,Nginx 会缓冲代理响应的数据,以便在接收完整的响应后再将其发送给客户端。通过将此设置为 off,Nginx 将不会缓冲代理响应的数据,而是会立即将其发送给客户端,适用于需要实时发送响应数据的场景
proxy-buffering off;
# 关闭代理缓存。默认情况下,Nginx 会对代理响应进行缓存,以提高性能和减少后端服务器的负载。通过将此设置为 off,Nginx 将不会对代理响应进行缓存,适用于不需要缓存代理响应的场景。
proxy-cache off;
# 设置请求头中的 Connection 字段为空。这样做的目的是告诉后端服务器,客户端与 Nginx 之间的连接是持久连接,而不是短连接。这对于一些需要持久连接的应用程序是有用的,例如 WebSocket 应用程序。
proxy_set_header Connection '';
# 反向代理缓冲区的数量。在此例中,设置为 32。
proxy-buffers-number: "32"
# 反向代理头部哈希表的最大大小。
proxy-headers-hash-max-size: "51200"
# 反向代理头部哈希表桶的大小。
proxy-headers-hash-bucket-size: "6400"
# 指定在遇到错误时,Nginx 应该尝试连接的下一个上游服务器
proxy-next-upstream: "error timeout http_500 http_502 http_503 http_504"
# 启用 Gzip 压缩功能
use-gzip: "true"
# 启用 Gzip 压缩的最小文件大小。
gzip-min-length: "1000"
# Gzip 压缩级别
gzip-level: "1"
# 启用 Gzip 压缩的 MIME 类型。
gzip-types: "text/plain application/x-javascript text/css application/xml application/json"
# 启用的 SSL/TLS 协议版本。
ssl-protocols: "TLSv1 TLSv1.1 TLSv1.2"
# 启用的 SSL 密码套件。
ssl-ciphers: "ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:AES256+EDH"
# SSL 缓冲区大小。
ssl-buffer-size: "16k"
# 启用 SSL 会话缓存。
ssl-session-cache: "true"
# SSL 会话超时时间。
ssl-session-timeout: "5m"
# Diffie-Hellman 密钥交换的参数文件路径。
ssl-dh-param: "/etc/nginx/pem/dhparam.pem"
# 自定义上游日志格式。这里定义了一种格式,包含了多个变量,如时间、主机名、远程地址、上游地址等。
log-format-upstream: "$time_local|$hostname|$remote_addr|$upstream_addr|$request_time|$upstream_response_time|$upstream_connect_time|$status|$upstream_status|-|$bytes_sent|$body_bytes_sent|-|$request|$http_user_agent|$http_referrer|^^|$scheme|$request_method|$request_id|-|^^|-|$cookie_jsessionid"
# 将计算一个完整的 X-Forwarded-For header
compute-full-forwarded-for: "true":
# 将传入请求中的标准代理标头比如 X-Forwarded-For、X-Forwarded-Proto传递到后端服务。
use-forwarded-headers: "true":
# 是用于指定在 HTTP 请求中用于传递客户端真实 IP 地址的头部名称。
forwarded-for-header: X-Forwarded-For
开启跨域
annotations:
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/cors-allow-origin: "https://xxx.xxx.cn"
nginx.ingress.kubernetes.io/cors-allow-methods: "GET, PUT, POST, DELETE, PATCH, OPTIONS"
nginx.ingress.kubernetes.io/cors-allow-headers: "DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range"
nginx.ingress.kubernetes.io/cors-allow-credentials: "true"
nginx.ingress.kubernetes.io/cors-expose-headers: "Content-Length,Content-Range"
nginx.ingress.kubernetes.io/cors-max-age: "86400"
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/hsts: "max-age=31536000; includeSubDomains; preload"
nginx.ingress.kubernetes.io/configuration-snippet: |
more_set_headers "Cache-Control: no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0";
more_set_headers "X-XSS-Protection: 1; mode=block";
more_set_headers "Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';";
nginx.ingress.kubernetes.io/x-content-type-options: "nosniff"
nginx.ingress.kubernetes.io/x-frame-options: "DENY"
参考文献:ConfigMap - Ingress-Nginx Controller