Wildsky F.

Easy things should be easy, and hard things should be possible.



K8S ingress 上傳檔案的雷(其實和 Nginx 比較有關)

Posted on

前陣子工作上有同事遇到個 bug:

如果在 local 跑檔案上傳,在上傳的過程中,會在後端 server 的 file 暫存區看到一個檔案,檔案大小也會隨著上傳進度而漸增;然而,deploy 到我們公司的 k8s 上後,卻變成在上傳過程中會一直看不到暫存檔,直到上傳進度達到 100% 時才會看到檔案突然出現。

這個 bug 和 Nginx 有關,它會 default 對檔案做 buffering,相關設定值為 proxy_request_buffering 可以在 ngx_http_proxy_module 的文件 裡看到這個預設值為 on

而 k8s 有 Nginx,所以理所當然地也會受到這個影響。如果不需要這個預設行為的話就要額外加上 annotation 才能改變這個預設行為:

nginx.ingress.kubernetes.io/proxy_request_buffering off;

是個沒遇過根本不會知道的雷⋯

參考: