nginx文件上傳限制以及超時(shí)無響應(yīng)問題的解決
一、背景
筆者最近開發(fā)前后端分離項(xiàng)目遇到一些問題,后端服務(wù)是基于80/443端口反向代理的,所以請求會經(jīng)過nginx網(wǎng)關(guān),然后將請求代理到后端服務(wù),這是開發(fā)環(huán)境。
二、問題
- 文件上傳大小有限制
- 上傳傳時(shí)間過長無響應(yīng)
二、解決方案
http { ... # 性能優(yōu)化 sendfile on; tcp_nopush on; tcp_nodelay on; # 客戶端請求配置 client_max_body_size 1000M; # 解決文件上傳大小限制 client_body_buffer_size 2M; client_header_buffer_size 256k; large_client_header_buffers 4 256k; # 超時(shí)設(shè)置 client_body_timeout 600s; client_header_timeout 600s; keepalive_timeout 120s; keepalive_requests 1000; # 反向代理配置 proxy_connect_timeout 600s; proxy_send_timeout 600s; proxy_read_timeout 600s; }
經(jīng)過以上客戶端請求配置和超時(shí)配置后按理說就解決了上面兩個(gè)問題了,可是當(dāng)我再進(jìn)行測試的時(shí)候,接口依舊1分鐘請求超時(shí)。
最后我想了一圈也沒想到竟然是axios請求超時(shí)配置是60000ms,也就是1分鐘,此時(shí)此刻豁然開朗了。
const service = axios.create({ baseURL: '/api', // api base_url timeout: 300000 // 請求超時(shí)時(shí)間, 配置為5分鐘 })
再進(jìn)行測試
ok,也是上傳成功了,沒想到用時(shí)2.6分鐘。
四、總結(jié)
配置nginx文件限制不僅僅在nginx中配置,后端服務(wù)也要配置,因?yàn)橛泻脦讓泳W(wǎng)關(guān),例如SpringBoot的配置:
# multipart configuration spring.servlet.multipart.max-request-size=100MB spring.servlet.multipart.max-file-size=100MB
還有就是請求超時(shí)配置,例如axios的請求超時(shí)時(shí)間:
const service = axios.create({ baseURL: '/api', // api base_url timeout: 300000 // 請求超時(shí)時(shí)間, 配置為5分鐘 })
最后還有nginx配置:
http { ... # 性能優(yōu)化 sendfile on; tcp_nopush on; tcp_nodelay on; # 客戶端請求配置 client_max_body_size 100M; # 解決文件上傳大小限制 client_body_buffer_size 2M; client_header_buffer_size 256k; large_client_header_buffers 4 256k; # 超時(shí)設(shè)置 client_body_timeout 600s; client_header_timeout 600s; keepalive_timeout 120s; keepalive_requests 1000; # 反向代理配置 proxy_connect_timeout 600s; proxy_send_timeout 600s; proxy_read_timeout 600s; }
這三板斧下來就能夠解決大部分文件上傳問題了。
到此這篇關(guān)于nginx文件上傳限制以及超時(shí)無響應(yīng)問題的解決的文章就介紹到這了,更多相關(guān)nginx文件上傳限制及超時(shí)無響應(yīng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx實(shí)現(xiàn)動態(tài)封禁IP的設(shè)計(jì)方案
為了封禁某些爬蟲或者惡意用戶對服務(wù)器的請求,我們需要建立一個(gè)動態(tài)的 IP 黑名單,對于黑名單中的 IP ,我們將拒絕提供服務(wù),并且可以設(shè)置封禁失效時(shí)間,所以本文給大家介紹了Nginx實(shí)現(xiàn)動態(tài)封禁IP的設(shè)計(jì)方案,需要的朋友可以參考下2024-12-12Nginx四層負(fù)載均衡的實(shí)現(xiàn)示例
Nginx?不支持傳統(tǒng)的四層負(fù)載均衡,但可以通過stream模塊配合TCP實(shí)現(xiàn)類似的功能,本文主要介紹了Nginx四層負(fù)載均衡的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-04-04在Nginx服務(wù)器中配置mod_proxy反向代理的方法
這篇文章主要介紹了在Nginx服務(wù)器中配置mod_proxy反向代理的方法,Nginx服務(wù)器最大的特點(diǎn)就是作高性能反向代理使用,需要的朋友可以參考下2015-07-07nginx如何實(shí)現(xiàn)同個(gè)ip、端口訪問不同的項(xiàng)目(以路徑區(qū)分項(xiàng)目)
這篇文章主要介紹了nginx如何實(shí)現(xiàn)同個(gè)ip、端口訪問不同的項(xiàng)目(以路徑區(qū)分項(xiàng)目),具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12