nginx反向代理踩過的坑及解決
nginx作代理服務(wù)器,無法上傳大于1M文件
解決方式
在proxy_pass的location添加下面2行解決。
client_max_body_size 512m; client_body_buffer_size 10m;
client_max_body_size
默認(rèn)1M,表示客戶端上傳到服務(wù)器最大允許大小,文件到服務(wù)器端后(后臺檢驗(yàn)),檢驗(yàn)發(fā)現(xiàn)大于該值,HTTP協(xié)議會報(bào)錯(cuò) 413 Request Entity Too Large。(注意這僅僅影響上傳)
client_body_buffer_size
小于client_body_buffer_size直接將數(shù)據(jù)先在內(nèi)存中存儲。如果請求的值大于client_body_buffer_size小于client_max_body_size,就會將數(shù)據(jù)先存儲到臨時(shí)文件中。
以下實(shí)驗(yàn)nginx的版本1.17.3
在linux環(huán)境
- client_max_body_size 3g;
- client_body_buffer_size 50m;(單位不可為g,不然啟動報(bào)錯(cuò))
- client_body_buffer_size 值嘗試1m-3072m 上傳2.4GB的文件結(jié)果都成功!
在windows版本下
問題多多值得注意!
- client_max_body_size 3g;
- client_body_buffer_size 2047m;(單位不可為g,可成功啟動最大值是2047m,但看下面)
上傳2.4GB的文件結(jié)果:失敗
nginx報(bào)錯(cuò)
malloc(2146435072) failed (8: Not enough storage is available to process this command)
情況說明
1. 即使我添加主機(jī)物理內(nèi)存到6GB,可用5GB。也報(bào)這錯(cuò)
2. 即使上傳2KB的文件,也報(bào)這錯(cuò)
3. 嘗試將client_body_buffer_size值設(shè)置在大于1024m以,上傳1300m可成功,但上傳文件如1500m會出錯(cuò)。
4. client_body_buffer_size值設(shè)置在小于等于1024m,可成功上傳1900m。但上傳2048m失敗,也報(bào)這錯(cuò)。
5. 當(dāng)上傳的單文件大于client_body_buffer_size值時(shí),而小于client_max_body_size某些情況下也會出現(xiàn)上傳故障。
Windows版本nginx如何設(shè)置
1. client_body_buffer_size 值不要大于或接近1024m。
2. client_max_body_size 和client_body_buffer_size相同的值,(畢竟存放內(nèi)存,也高效)。
另外注意。 因設(shè)置 client_body_buffer_size過大,數(shù)據(jù)先存儲到內(nèi)存,但實(shí)際占用內(nèi)存是雙倍的,上傳完畢釋放。
Nginx報(bào)504 gateway timeout錯(cuò)誤
網(wǎng)站項(xiàng)目有Excel導(dǎo)入的功能,執(zhí)行一個(gè)非常耗時(shí)的文件,超時(shí)不返回,瀏覽器返回504 gateway timeout錯(cuò)誤!
解決方式
在proxy_pass的location添加以下
proxy_connect_timeout 3600s; proxy_send_timeout 3600s; proxy_read_timeout 3600s;
以上的單位是秒。
總結(jié)
好了,這些僅為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Nginx徹底解決Druid未授權(quán)訪問漏洞的方法
Apache Druid作為一個(gè)高性能的實(shí)時(shí)分析數(shù)據(jù)庫,憑借其出色的數(shù)據(jù)攝取和查詢能力,在海量數(shù)據(jù)分析領(lǐng)域占據(jù)了重要地位,然而,其自帶的監(jiān)控頁面帶來了一個(gè)嚴(yán)重的安全隱患:未授權(quán)訪問漏洞,本文給大家介紹了Nginx徹底解決Druid未授權(quán)訪問漏洞的方法,需要的朋友可以參考下2025-08-08
Nginx進(jìn)階配置實(shí)現(xiàn)SSL證書部署與資源防盜鏈實(shí)操
本文主要介紹了在Web服務(wù)運(yùn)維中使用Nginx進(jìn)行SSL證書部署,實(shí)現(xiàn)HTTPS加密訪問,強(qiáng)制HTTP轉(zhuǎn)HTTPS以及配置Nginx防盜鏈保護(hù)靜態(tài)資源安全的具體方法,感興趣的可以了解一下2026-04-04
windows下快速安裝nginx并配置開機(jī)自啟動的方法
這篇文章主要介紹了windows下快速安裝nginx 并配置開機(jī)自啟動的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05
樹莓派如何搭建web服務(wù)器(nginx?+php?+?mysql?+?vsftpd?+phpmyadmin)
本文介紹如何使用樹莓派搭建Web服務(wù)器,包括安裝Nginx、PHP、MySQL、ftp和phpMyAdmin,步驟詳盡,涵蓋不同架構(gòu)的PHP安裝,提供了配置MySQL遠(yuǎn)程訪問和管理數(shù)據(jù)庫的方法,是搭建個(gè)人Web服務(wù)器的實(shí)用指南2024-11-11
詳解Nginx如何根據(jù)swagger關(guān)鍵字屏蔽頁面
這篇文章主要為大家詳細(xì)介紹了Nginx 如何根據(jù)swagger關(guān)鍵字屏蔽頁面的實(shí)現(xiàn)方案,文中有詳細(xì)的解決方案,對我們的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-08-08
詳解nginx 代理多個(gè)服務(wù)器(多個(gè)server方式)
本篇文章主要介紹了詳解nginx 代理多個(gè)服務(wù)器(多個(gè)server方式),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10
nginx 老網(wǎng)站域名重定向到新網(wǎng)站的方法(親測)
本文主要介紹了nginx 老網(wǎng)站域名重定向到新網(wǎng)站的方法,以減少業(yè)務(wù)影響并確保流量導(dǎo)向新域名,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02

