白名单

  1. nginx.ingress.kubernetes.io/whitelist-source-range: 123.123.123.123
  2. nginx.ingress.kubernetes.io/whitelist-source-range: 123.123.123.123

设置buffer大小

  1. kubernetes.io/ingress.class: nginx
  2. nginx.ingress.kubernetes.io/proxy-body-size: 200m

同域名 配置多个 后端节点

  1. kubernetes.io/ingress.class: nginx
  2. nginx.ingress.kubernetes.io/rewrite-target: /$1
  3. nginx.ingress.kubernetes.io/use-regex: 'true'
  4. kubernetes.io/ingress.class: nginx
  5. nginx.ingress.kubernetes.io/cors-allow-credentials: 'true'
  6. nginx.ingress.kubernetes.io/cors-allow-headers: '*'
  7. nginx.ingress.kubernetes.io/cors-allow-methods: 'PUT, GET, POST, OPTIONS,HEAD'
  8. nginx.ingress.kubernetes.io/cors-allow-origin: 'http://tms.test.qq.com'
  9. nginx.ingress.kubernetes.io/enable-cors: 'true'
  10. nginx.ingress.kubernetes.io/proxy-body-size: 300m
  11. nginx.ingress.kubernetes.io/rewrite-target: /$1
  12. nginx.ingress.kubernetes.io/service-weight: 'custom-hs: 100'
  13. nginx.ingress.kubernetes.io/use-regex: 'true'
  14. # 指定了我们使用后端ingress controller的类别,如果后端有多个ingress controller的时候很重要
  15. kubernetes.io/ingress.class: "nginx"
  16. # 指定我们的rules的path可以使用正则表达式,如果我们没有使用正则表达式,此项则可不使用
  17. nginx.ingress.kubernetes.io/use-regex: "true"
  18. # 启用CORS kubernetes-ingress跨域设置 ---
  19. # https://www.lemonlzy.cn/2020/10/12/kubernetes-ingress%E8%B7%A8%E5%9F%9F%E8%AE%BE%E7%BD%AE/
  20. kubernetes中的跨域设置在Ingress中进行配置,要在Ingress规则中启用跨域资源共享(CORS),请添加注释 nginx.ingress.kubernetes.io/enable-cors: true”。这将在服务器位置中添加一个部分以启用此功能。
  21. # 控制在CORS操作期间是否可以传递凭据。默认: true,例: nginx.ingress.kubernetes.io/cors-allow-credentials: “false”
  22. # 控制接受哪些方法。这是一个多值字段,以“,”分隔,仅接受字母(大写和小写),默认GET, PUT, POST, DELETE, PATCH, OPTIONS。
  23. # 启用CORS kubernetes-ingress跨域设置 ---

自动跳转https

  1. nginx.ingress.kubernetes.io/ssl-redirect: 'true'

设置上传文件大小

  1. nginx.ingress.kubernetes.io/proxy-body-size: 600M
  2. #超时
  3. nginx.ingress.kubernetes.io/proxy-connect-timeout: '600'
  4. nginx.ingress.kubernetes.io/proxy-read-timeout: '600'
  5. nginx.ingress.kubernetes.io/proxy-send-timeout: '600'
  6. #保持连接时长
  7. nginx.ingress.kubernetes.io/upstream-keepalive-timeout: '60'

ingress的监控

https://help.aliyun.com/document_detail/195702.html

阿里云ingress启动

  1. ["/bin/sh","-c","mount -o remount rw /proc/sys\nsysctl -w net.core.somaxconn=65535\nsysctl -w net.ipv4.ip_local_port_range=\"1024 65535\"\n"]
  2. ["/nginx-ingress-controller","--election-id=ingress-controller-leader","--ingress-class=nginx","--configmap=$(POD_NAMESPACE)/nginx-configuration","--tcp-services-configmap=$(POD_NAMESPACE)/tcp-services","--udp-services-configmap=$(POD_NAMESPACE)/udp-services","--annotations-prefix=nginx.ingress.kubernetes.io","--publish-service=$(POD_NAMESPACE)/nginx-ingress-lb","--validating-webhook=:8443","--validating-webhook-certificate=/usr/local/certificates/cert","--validating-webhook-key=/usr/local/certificates/key","--v=2"]

保持一个pod连接

  1. nginx.ingress.kubernetes.io/affinity: cookie # 实现会话亲和的方式,目前只支持cookie
  2. nginx.ingress.kubernetes.io/affinity-mode: persistent # 默认是balanced平衡的,伸缩应用时会重新分配一些session, 以确保每个pod处理的会话数均衡;persistent持续的, 保持最大限度的会话亲和
  3. nginx.ingress.kubernetes.io/session-cookie-hash: sha1 #
  4. nginx.ingress.kubernetes.io/session-cookie-name: awesome-java # 自定义cookie名字, 默认为INGRESSCOOKIE
  5. nginx.ingress.kubernetes.io/affinity: "cookie"
  6. nginx.ingress.kubernetes.io/affinity-mode: "persistent"
  7. nginx.ingress.kubernetes.io/session-cookie-name: "route"

ingress中一个域名配置配置不同路径指向不容域名 中nginx的配置

        ## start server xxx.xxx.com                                                                                                       
        server {                                                                                                                               
                server_name xxx.xxx.com ;                                                                                                 

                listen 80  ;                                                                                                                   
                listen 443  ssl http2 ;                                                                                                        

                set $proxy_upstream_name "-";                                                                                                  

                ssl_certificate_by_lua_block {                                                                                                 
                        certificate.call()                                                                                                     
                }                                                                                                                              

                location ~* "^/admin_xpx/templates/xpx_web/dist/(.*)" {                                                                        

                        set $namespace      "xpx-shopcode";                                                                                    
                        set $ingress_name   "app-xpx-shopcode-ingress";                                                                        
                        set $service_name   "ingress-a96ccef57f18a180821b5e98c35b4b87";                                                        
                        set $service_port   "80";                                                                                              
                        set $location_path  "/admin_xpx/templates/xpx_web/dist/(.*)";                                                          
                        set $global_rate_limit_exceeding n;                                                                                    

                        rewrite_by_lua_block {                                                                                                 
                                lua_ingress.rewrite({                                                                                          
                                        force_ssl_redirect = false,                                                                            
                                        ssl_redirect = false,                                                                                  
                                        force_no_ssl_redirect = false,                                                                         
                                        use_port_in_redirects = false,                                                                         
                                global_throttle = { namespace = "", limit = 0, window_size = 0, key = { }, ignored_cidrs = { } },              
                                })                                                                                                             
                                balancer.rewrite()                                                                                             
                                plugins.run()                                                                                                  
                        }

                        # be careful with `access_by_lua_block` and `satisfy any` directives as satisfy any                                    
                        # will always succeed when there's `access_by_lua_block` that does not have any lua code doing `ngx.exit(ngx.DECLINED)`
                        # other authentication method such as basic auth or external auth useless - all requests will be allowed.              
                        #access_by_lua_block {                                                                                                 
                        #}                                                                                                                     

                        header_filter_by_lua_block {                                                                                           
                                lua_ingress.header()                                                                                           
                                plugins.run()                                                                                                  
                        }                                                                                                                      

                        body_filter_by_lua_block {                                                                                             
                                plugins.run()                                                                                                  
                        }                                                                                                                      

                        log_by_lua_block {                                                                                                     
                                balancer.log()                                                                                                 

                                monitor.call()                                                                                                 

                                plugins.run()                                                                                                  
                        }                                                                                                                      

                        port_in_redirect off;                                                                                                  

                        set $balancer_ewma_score -1;                                                                                           
                        set $proxy_upstream_name "xpx-shopcode-ingress-a96ccef57f18a180821b5e98c35b4b87-80";                                   
                        set $proxy_host          $proxy_upstream_name;                                                                         
                        set $pass_access_scheme  $scheme;                                                                                      

                        set $pass_server_port    $server_port;                                                                                 

                        set $best_http_host      $http_host;                                                                                   
                        set $pass_port           $pass_server_port;                                                                            

                        set $proxy_alternative_upstream_name "";                                                                               

                        client_max_body_size                    500M;                                                                          

                        proxy_set_header Host                   $best_http_host;                                                               

                        # Pass the extracted client certificate to the backend

                        # Allow websocket connections                                                                                          
                        proxy_set_header                        Upgrade           $http_upgrade;                                               

                        proxy_set_header                        Connection        $connection_upgrade;                                         

                        proxy_set_header X-Request-ID           $req_id;                                                                       
                        proxy_set_header X-Real-IP              $remote_addr;                                                                  

                        proxy_set_header X-Forwarded-For        $remote_addr;                                                                  

                        proxy_set_header X-Forwarded-Host       $best_http_host;                                                               
                        proxy_set_header X-Forwarded-Port       $pass_port;                                                                    
                        proxy_set_header X-Forwarded-Proto      $pass_access_scheme;                                                           

                        proxy_set_header X-Scheme               $pass_access_scheme;                                                           

                        # Pass the original X-Forwarded-For                                                                                    
                        proxy_set_header X-Original-Forwarded-For $http_x_forwarded_for;                                                       

                        # mitigate HTTPoxy Vulnerability                                                                                       
                        # https://www.nginx.com/blog/mitigating-the-httpoxy-vulnerability-with-nginx/                                          
                        proxy_set_header Proxy                  "";                                                                            

                        # Custom headers to proxied server                                                                                     

                        proxy_connect_timeout                   600s;                                                                          
                        proxy_send_timeout                      600s;                                                                          
                        proxy_read_timeout                      600s;                                                                          

                        proxy_buffering                         off;                                                                           
                        proxy_buffer_size                       4k;                                                                            
                        proxy_buffers                           4 4k;                                                                          

                        proxy_max_temp_file_size                1024m;                                                                         

                        proxy_request_buffering                 on;                                                                            
                        proxy_http_version                      1.1;                                                                           

                        proxy_cookie_domain                     off;                                                                           
                        proxy_cookie_path                       off;                                                                           

                        # In case of errors try the next upstream server before returning an error                                             
                        proxy_next_upstream                     error timeout;                                                                 
                        proxy_next_upstream_timeout             0;                                                                             
                        proxy_next_upstream_tries               3;

                        rewrite "(?i)/admin_xpx/templates/xpx_web/dist/(.*)" /$1 break;                                                        
                        proxy_pass http://upstream_balancer;                                                                                   

                        proxy_redirect                          off;                                                                           

                }