实际场景
用户访问--->阿里云CDN--->机房公网防火墙--->haproxy-→ingress
需要在ingress日志中拿到用户真实IP
ingress配置文件
--- apiVersion: v1 data: add-headers: ingress-nginx/custom-headers-default allow-backend-server-header: 'true' compute-full-forwarded-for: 'true' enable-underscores-in-headers: 'true' error-log-level: notice forwarded-for-header: X-Forwarded-For generate-request-id: 'true' hsts: 'false' ignore-invalid-headers: 'true' log-format-escape-json: 'true' log-format-upstream: >- {"tags":"nginx-h5", "time_local":"$time_local", "status":"$status", "domain_name":"$host", "upstream_status":"$upstream_status", "request":"$request", "client_ip":"$http_x_forwarded_for", "remote_addr":"$remote_addr", "upstream_addr":"$upstream_addr", "msec":"$msec", "upstream_connect_time":"$upstream_connect_time", "upstream_response_time":"$upstream_response_time", "request_time":"$request_time", "request_length":"$request_length", "upstream_response_length":"$upstream_response_length", "body_bytes_sent":"$body_bytes_sent", "upstream_header_time":"$upstream_header_time", "http_referer":"$http_referer", "http_user_agent":"$http_user_agent"} max-worker-connections: '65535' proxy-body-size: 4096M proxy-connect-timeout: '3600' proxy-read-timeout: '3600' proxy-send-timeout: '3600' ssl-ciphers: >- ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA ssl-protocols: TLSv1.2 TLSv1.1 TLSv1 upstream-keepalive-connections: '40000' use-forwarded-headers: 'true' use-http2: 'false' use-proxy-protocol: 'true' worker-processes: '2' worker-shutdown-timeout: 2hs kind: ConfigMap metadata: name: ingress-nginx-controller-default namespace: ingress-nginx |
haproxy配置文件
listen http-80 bind 0.0.0.0:80 mode tcp option tcplog tcp-request inspect-delay 5s default-server inter 10s downinter 5s rise 2 fall 2 slowstart 60s maxconn 250 maxqueue 256 weight 100 server ingress-nginx-controller1 10.10.21.120:80 send-proxy check server ingress-nginx-controller2 10.10.21.122:80 send-proxy check server ingress-nginx-controller3 10.10.21.124:80 send-proxy check listen https-443 bind 0.0.0.0:443 mode tcp option tcplog tcp-request inspect-delay 5s default-server inter 10s downinter 5s rise 2 fall 2 slowstart 60s maxconn 250 maxqueue 256 weight 100 server ingress-nginx-controller1 10.10.21.120:443 send-proxy check server ingress-nginx-controller2 10.10.21.122:443 send-proxy check server ingress-nginx-controller3 10.10.21.124:443 send-proxy check |