Nginx的流式響應(yīng)配置教程
Nginx的流式響應(yīng)配置
Nginx的流式響應(yīng)(streaming response)是指在Nginx作為反向代理服務(wù)器時(shí),將響應(yīng)內(nèi)容一邊接收,一邊逐步發(fā)送給客戶端的過(guò)程。
這種響應(yīng)方式可以提高用戶體驗(yàn)和網(wǎng)絡(luò)傳輸效率,常用于處理較大的響應(yīng)內(nèi)容。
在默認(rèn)情況下,Nginx是通過(guò)緩存響應(yīng)內(nèi)容來(lái)處理請(qǐng)求的。
也就是說(shuō),當(dāng)Nginx接收到完整的響應(yīng)后,才會(huì)將其發(fā)送給客戶端。
但是,在某些場(chǎng)景下,這種方式可能會(huì)導(dǎo)致延遲較高或者請(qǐng)求失敗的情況發(fā)生。
因此,Nginx提供了流式響應(yīng)的功能,讓反向代理服務(wù)器能夠在接收到響應(yīng)的同時(shí),逐步地將響應(yīng)內(nèi)容發(fā)送給客戶端。
這種方式可以減少等待時(shí)間,同時(shí)降低網(wǎng)絡(luò)傳輸?shù)呢?fù)載壓力。
實(shí)現(xiàn)Nginx的流式響應(yīng)
需要在Nginx配置文件中加入相應(yīng)的指令,例如:
也就是打字機(jī)效果,
# 不緩存,支持流式輸出 proxy_cache off; # 關(guān)閉緩存 proxy_buffering off; # 關(guān)閉代理緩沖 chunked_transfer_encoding on; # 開(kāi)啟分塊傳輸編碼 tcp_nopush on; # 開(kāi)啟TCP NOPUSH選項(xiàng),禁止Nagle算法 tcp_nodelay on; # 開(kāi)啟TCP NODELAY選項(xiàng),禁止延遲ACK算法 keepalive_timeout 300; # 設(shè)定keep-alive超時(shí)時(shí)間為65秒
這段nginx配置是為了解決流式響應(yīng)的問(wèn)題。
通過(guò)以下幾個(gè)配置來(lái)實(shí)現(xiàn)
proxy_cache off; # 關(guān)閉緩存
- 關(guān)閉緩存,防止代理服務(wù)器緩存流式響應(yīng)內(nèi)容,導(dǎo)致客戶端收不到完整響應(yīng)。
proxy_buffering off; # 關(guān)閉代理緩沖
- 關(guān)閉代理服務(wù)器對(duì)響應(yīng)的緩沖,防止其緩沖整個(gè)響應(yīng)后再發(fā)送給客戶端,無(wú)法實(shí)現(xiàn)流式傳輸效果。
chunked_transfer_encoding on; # 開(kāi)啟分塊傳輸編碼
- 開(kāi)啟分塊傳輸編碼,允許將響應(yīng)分成多個(gè)塊進(jìn)行傳輸,實(shí)現(xiàn)流式傳輸。
tcp_nopush on; # 開(kāi)啟TCP NOPUSH選項(xiàng),禁止Nagle算法
- 開(kāi)啟TCP NOPUSH選項(xiàng),禁用Nagle算法,防止小塊數(shù)據(jù)的合并,實(shí)時(shí)發(fā)送給客戶端。
tcp_nodelay on; # 開(kāi)啟TCP NODELAY選項(xiàng),禁止延遲ACK算法
- 開(kāi)啟TCP NODELAY選項(xiàng),禁用延遲ACK算法,防止ACK包的延遲,及時(shí)發(fā)送給客戶端。
keepalive_timeout 300; # 設(shè)定keep-alive超時(shí)時(shí)間為65秒
- 增加keepalive超時(shí)時(shí)間,防止在流式響應(yīng)未完成時(shí),代理與源服務(wù)器的連接就被關(guān)閉。
- 所以,通過(guò)關(guān)閉緩存和代理緩沖,開(kāi)啟分塊編碼、禁用Nagle與延遲ACK算法,以及增加keepalive超時(shí)時(shí)間,可以實(shí)現(xiàn)代理服務(wù)器與客戶端間的流式響應(yīng)傳輸。
- 使用這段配置,nginx代理可以透?jìng)髟捶?wù)器的流式響應(yīng)給客戶端,不會(huì)導(dǎo)致響應(yīng)內(nèi)容被截?cái)嗷蜓舆t,實(shí)現(xiàn)真正的流式體驗(yàn)。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
nginx多https證書(shū)配置實(shí)現(xiàn)
本文主要介紹了nginx多https證書(shū)配置實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-04-04Nginx配置同一個(gè)域名同時(shí)支持http與https兩種方式訪問(wèn)實(shí)現(xiàn)
這篇文章主要介紹了Nginx配置同一個(gè)域名同時(shí)支持http與https兩種方式訪問(wèn)實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Nginx請(qǐng)求轉(zhuǎn)發(fā)配置指南
Nginx 是一款高性能的 HTTP 和反向代理服務(wù)器,也是一個(gè) IMAP/POP3/SMTP 代理服務(wù)器,本文檔將介紹如何使用 Nginx 配置請(qǐng)求轉(zhuǎn)發(fā),并解釋一些常用的配置參數(shù),需要的朋友可以參考下2024-10-10生產(chǎn)環(huán)境部署Nginx服務(wù)器雙機(jī)熱備部署keepalived的步驟(多種模式教程)
今天演示下生產(chǎn)環(huán)境keepalived的部署方式,安裝模式有很多,比如說(shuō)主備模型和雙主模型,主備分:搶占模式 和 非搶占模式,對(duì)Nginx keepalived 雙機(jī)熱備部署相關(guān)知識(shí)感興趣的朋友跟隨小編一起看看吧2024-07-07Nginx proxy_set_header參數(shù)設(shè)置
本文主要介紹了Nginx proxy_set_header參數(shù)設(shè)置,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-09-09Nginx訪問(wèn)日志及錯(cuò)誤日志參數(shù)說(shuō)明
這篇文章主要介紹了Nginx訪問(wèn)日志及錯(cuò)誤日志參數(shù)說(shuō)明,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11