日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nginx-ingress设置日志格式-配置转发真实ip-超时参数配置-会话保持参数

發布時間:2024/1/8 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nginx-ingress设置日志格式-配置转发真实ip-超时参数配置-会话保持参数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

nginx-ingress設置日志格式-配置轉發真實ip-白名單限制

參考官方文檔
nginx-ingress官方文檔
修改nginx-ingrss的configmap配置文件

apiVersion: v1 data:compute-full-forwarded-for: "true"forwarded-for-header: X-Forwarded-Forlog-format-upstream: '{"time": "$time_iso8601", "proxy_protocol_addr": "$proxy_protocol_addr","proxy_add_x_forwarded_for": "$proxy_add_x_forwarded_for", "request_id": "$req_id", "remote_user":"$remote_user", "bytes_sent": $bytes_sent, "request_time": $request_time, "status":$status, "vhost": "$host", "request_proto": "$server_protocol", "path": "$uri","request_query": "$args", "request_length": $request_length, "duration": $request_time,"method": "$request_method", "http_referrer": "$http_referer", "http_user_agent":"$http_user_agent", "remote_addr":"$remote_addr", "remote_port": "$remote_port","x_forwarded_for": "$http_x_forwarded_for" }'real_ip_header: X-Forwarded-For #將客戶端真實ip替換為請求頭的值real_ip_recursive: "on" #遞歸排除IP地址,ip串從右到左開始排除set_real_ip_from里面出現的IP,如果出現了未出現這些ip段的IP,那么這個IP將被認為是用戶的IPset_real_ip_from: 100.125.0.0/16 #可信任的ip,真實服務器上一級代理的IP地址或者IP段,可以寫多行use-forwarded-headers: "true" #如果Nginx在其他7層代理或負載均衡后面,當期望Nginx將X-Forwarded-*的頭信息傳遞給后端服務時,則需要將此參數設為true,如果設為false(默認為false),Nginx會忽略掉X-Forwarded-*的頭信息。false設置適用于Nginx直接對外或前面只有3層負載均衡的場景 kind: ConfigMap metadata:creationTimestamp: "2021-12-02T02:04:31Z"labels:app: nginx-ingresschart: nginx-ingress-1.2.6component: controllerheritage: Tillerrelease: cceaddon-nginx-ingressname: cceaddon-nginx-ingress-controllernamespace: kube-systemresourceVersion: "4738338"selfLink: /api/v1/namespaces/kube-system/configmaps/cceaddon-nginx-ingress-controlleruid: 38ee4b63-4fcb-43c8-8ed1-1258f28ab13c

nginx-ingress配置域名轉發時參數注釋添加

上述配置需要配置nginx-ingress的本身的配置文件,下邊是給ingress轉發創建資源時添加的注釋
上傳一些大文件參數時需要配置的大小限制和超時時間限制參數

nginx.ingress.kubernetes.io/proxy-body-size=200m #指定請求大小限制 nginx.ingress.kubernetes.io/proxy-read-timeout=600 #連接成功后_等候后端服務器響應時間_其實已經進入后端的排隊之中等候處理 nginx.ingress.kubernetes.io/proxy-send-timeout=600 #后端服務器數據回傳時間_就是在規定時間之內后端服務器必須傳完所有的數據 #我們這是轉發到后端需要在后端上傳到oss,所以需要等待后端給響應

如果后端還有nginx,nginx也需要調整時間

client_max_body_size 200M; #請求主體大小 client_header_buffer_size 32k; #標準請求頭大小 large_client_header_buffers 4 1024k; #最大請求頭大小 #先根據client_header_buffer_size配置的值分配一個buffer,如果分配的buffer無法容納 request_line/request_header,那么就會再次根據large_client_header_buffers配置的參數分配large_buffer,如果large_buffer還是無法容納,那么就會返回414(處理request_line)/400(處理request_header)錯誤。 proxy_send_timeout 600s; #后端服務器數據回傳時間_就是在規定時間之內后端服務器必須傳完所有的數據 proxy_read_timeout 600s; #連接成功后_等候后端服務器響應時間_其實已經進入后端的排隊之中等候處理

nginx-ingress限制白名單訪問
在ingress資源配置上添加參數

nginx.ingress.kubernetes.io/whitelist-source-range: 127.0.0.1,192.168.8.0/24

nginx-ingress會話保持設置

## 前提

基于kubernetes部署Java項目,發現在多pod模式下,會出現登錄成功但是頁面無法跳轉的問題,在單一pod時卻可以成功登錄并頁面正常跳轉,于是推測是cookie的問題。

網上的大部分文章提供的解決方案都是在service的配置文件中加入sessionAffinity: ClientIP,功能是選擇與請求來源ip更接近的pod,這樣就會固定同一個session,但是好像并不適用于我這個項目。

最終的解決當然還是要靠自己讀官方的文檔,ingress-nginx有大量的注釋配置,官方針對這種情況已經做了說明,需要細細閱讀,詳見Cookie affinity。

## 解決方案

注釋nginx.ingress.kubernetes.io/affinity在Ingress的所有上游中啟用和設置相似性類型。這樣,請求將始終定向到同一上游服務器。Nginx唯一可用的相似性類型是cookie。

如果為一個主機定義了多個Ingress nginx.ingress.kubernetes.io/affinity: cookie,并且至少一個Ingress使用,則只有Ingress使用的路徑nginx.ingress.kubernetes.io/affinity將使用會話Cookie相似性。通過隨機選擇后端服務器,可以在主機的其他入口定義的所有路徑進行負載均衡。

如果您使用Cookie affinity,則還可以使用注釋nginx.ingress.kubernetes.io/session-cookie-name來指定將用于路由請求的cookie名稱。 默認是創建一個名為INGRESSCOOKIE的cookie。

注釋nginx.ingress.kubernetes.io/affinity-mode定義了會話的粘性。如果將部署規模擴大,balance則將此選項設置為(默認)將重新分配一些會話,從而重新平衡服務器上的負載。將此設置為persistent不會重新平衡與新服務器的會話,因此提供了最大的粘性。

以上是官方文檔的直譯。

簡而言之,在ingress-nginx配置中應做以下操作:

設置nginx.ingress.kubernetes.io/affinity屬性,啟用會話保持。設置nginx.ingress.kubernetes.io/affinity-mode屬性,設置為balance在集群擴大pod時,會自動分配一些會話到新創建的pod上,用于平衡服務器的負載;設置為persistent則永遠保證用戶訪問pod的一致性,不會訪問到其他pod。設置nginx.ingress.kubernetes.io/session-cookie-name屬性,自定義cookie名稱。

對我用到了其中的三個屬性進行描述:

## 配置文件

使用session會話保持可以用于解決多tomcat的pod下,登錄由于session問題導致頁面無法跳轉的問題。

apiVersion: extensions/v1beta1 kind: Ingress metadata:name: ingress-tomcatnamespace: defaultannotations:kubernetes.io/ingress.class: "nginx"nginx.ingress.kubernetes.io/affinity: "cookie"nginx.ingress.kubernetes.io/affinity-mode: "persistent"nginx.ingress.kubernetes.io/session-cookie-name: "route" spec:tls:- hosts:- your.host.cnsecretName: https-secretrules: - host: your.host.cn http: paths: - path:backend:serviceName: your service nameservicePort: 8280

以下為其他網友提供的解決方案:

在service的配置文件中加入sessionAffinity: ClientIP,功能是選擇與請求來源ip更接近的pod,這樣就會固定同一個session。

apiVersion: v1 kind: Service metadata:name: tomcatnamespace: default spec:selector:app: tomcatrelease: canaryports:- name: httptargetPort: 8280port: 8280sessionAffinity: ClientIP

總結

以上是生活随笔為你收集整理的nginx-ingress设置日志格式-配置转发真实ip-超时参数配置-会话保持参数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。