nginx-ingress设置日志格式-配置转发真实ip-超时参数配置-会话保持参数
nginx-ingress設置日志格式-配置轉發真實ip-白名單限制
參考官方文檔
nginx-ingress官方文檔
修改nginx-ingrss的configmap配置文件
nginx-ingress配置域名轉發時參數注釋添加
上述配置需要配置nginx-ingress的本身的配置文件,下邊是給ingress轉發創建資源時添加的注釋
上傳一些大文件參數時需要配置的大小限制和超時時間限制參數
如果后端還有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部署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-超时参数配置-会话保持参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: codeblocks不支持16位,与64
- 下一篇: matlab中imag什么意思,Matl