NGINX Ingress Controller
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm pull ingress-nginx/ingress-nginx --version 4.2.5
tar xf ingress-nginx-4.2.5.tgz
helm upgrade --install ingress-nginx ingress-nginx \
--repo https://kubernetes.github.io/ingress-nginx --version 4.2.5 -f values.yaml \
--namespace ingress-nginx --create-namespace
kubectl create secret tls vimll-com --cert=/etc/ssl/wildcard_.vimll.com.crt --key=/etc/ssl/wildcard_.vimll.com.key
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-nginx
annotations:
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/proxy-buffering: "on"
nginx.ingress.kubernetes.io/proxy-buffers-number: "4"
nginx.ingress.kubernetes.io/proxy-buffer-size: "8k"
nginx.ingress.kubernetes.io/proxy-max-temp-file-size: "1024m"
nginx.ingress.kubernetes.io/limit-connections: "50"
nginx.ingress.kubernetes.io/limit-rps: "10"
nginx.ingress.kubernetes.io/limit-rpm: "100"
nginx.ingress.kubernetes.io/limit-burst-multiplier: "20"
nginx.ingress.kubernetes.io/limit-rate: "100"
nginx.ingress.kubernetes.io/limit-rate-after: "10240"
nginx.ingress.kubernetes.io/limit-whitelist: "192.168.9.11"
spec:
ingressClassName: nginx
tls:
- hosts:
- ingress.vimll.com
secretName: vimll-com
rules:
- host: ingress.vimll.com
http:
paths:
- pathType: Prefix
backend:
service:
name: nginx
port:
number: 80
path: /
kubectl apply -f ingress.yaml
灰度
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-nginx-canary
annotations:
nginx.ingress.kubernetes.io/canary: "true"
nginx.ingress.kubernetes.io/canary-weight: "20"
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/proxy-buffering: "on"
nginx.ingress.kubernetes.io/proxy-buffers-number: "4"
nginx.ingress.kubernetes.io/proxy-buffer-size: "8k"
nginx.ingress.kubernetes.io/proxy-max-temp-file-size: "1024m"
nginx.ingress.kubernetes.io/limit-connections: "50"
nginx.ingress.kubernetes.io/limit-rps: "10"
nginx.ingress.kubernetes.io/limit-rpm: "100"
nginx.ingress.kubernetes.io/limit-burst-multiplier: "20"
nginx.ingress.kubernetes.io/limit-rate: "100"
nginx.ingress.kubernetes.io/limit-rate-after: "10240"
nginx.ingress.kubernetes.io/limit-whitelist: "192.168.9.11"
spec:
ingressClassName: nginx
tls:
- hosts:
- ingress.vimll.com
secretName: vimll-com
rules:
- host: ingress.vimll.com
http:
paths:
- pathType: Prefix
backend:
service:
name: techxuexi
port:
number: 80
path: /
跨域相关配置:
metadata:
annotations:
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/cors-allow-credentials: "true"
nginx.ingress.kubernetes.io/cors-allow-headers: DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,access_token
nginx.ingress.kubernetes.io/cors-allow-origin: '*'
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/proxy-body-size: 2048m
nginx.ingress.kubernetes.io/proxy-connect-timeout: "180"
nginx.ingress.kubernetes.io/proxy-read-timeout: "180"
nginx.ingress.kubernetes.io/proxy-send-timeout: "180"
nginx.ingress.kubernetes.io/session-cookie-conditional-samesite-none: "true"
nginx.ingress.kubernetes.io/session-cookie-name: SSNONE
nginx.ingress.kubernetes.io/session-cookie-samesite: None
nginx.ingress.kubernetes.io/session-cookie-secure: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
常用配置项:
enable-underscores-in-headers: "true"
generate-request-id: "true"
ignore-invalid-headers: "true"
log-format-upstream: $remote_addr - [$remote_addr] - $remote_user [$time_local]
"$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $request_length
$request_time [$proxy_upstream_name] $upstream_addr $upstream_response_length
$upstream_response_time $upstream_status $req_id $host [$proxy_alternative_upstream_name]
max-worker-connections: "65536"
proxy-body-size: 20m
proxy-connect-timeout: "10"
proxy-cookie-path: / "/; httponly; secure; SameSite=None"
reuse-port: "true"
server-tokens: "false"
ssl-redirect: "false"
upstream-keepalive-timeout: "900"
worker-cpu-affinity: auto
allow-snippet-annotations: "true"
client_max_body_size: 100m
上传大小配置:
proxy-body-size: 300m
获取真实ip配置:
compute-full-forwarded-for: true
forwarded-for-header: X-Forwarded-For
use-forwarded-headers: true
开启gzip压缩:
use-gzip: true
gzip-level: "5"
gzip-types: "*"