Nginx的流式響應(yīng)配置實(shí)現(xiàn)小結(jié)
Nginx的流式響應(yīng)配置
使用ChatGPT的能力在聊天時(shí)來(lái)實(shí)現(xiàn)打字機(jī)效果,因此需要服務(wù)端接口進(jìn)行流式響應(yīng),碰到了幾個(gè)問(wèn)題:
1、服務(wù)端明明配置了響應(yīng)頭的Content-Type為:text/event-stream,但前端仍然不是流式接收內(nèi)容。
2、雖然前端能以流式接收服務(wù)端的響應(yīng)內(nèi)容,但內(nèi)容接收完畢,長(zhǎng)連接并未關(guān)閉,導(dǎo)致前端還以為服務(wù)端有數(shù)據(jù),會(huì)一直請(qǐng)求服務(wù)端,最后導(dǎo)致超時(shí)。
最后發(fā)現(xiàn)是nginx的問(wèn)題,由于本地對(duì)接的時(shí)候并未啟用nginx,所以本地對(duì)接沒(méi)有任何問(wèn)題。而線上使用nginx請(qǐng)求轉(zhuǎn)發(fā),有些配置是有默認(rèn)參數(shù)的,所以會(huì)失敗。因此,在這里分享一下,如果小伙們遇到同樣的問(wèn)題,可以試一試。
nginx部分配置如下:
server {
server_name xxxx;
listen xxxx;
location /xx/xx {
add_header backendIP $upstream_addr;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1; # 設(shè)置http版本為1.1;默認(rèn)為:1.0
proxy_set_header Connection ""; # 設(shè)置Connection為長(zhǎng)連接;默認(rèn)為:no
proxy_cache off; # 關(guān)閉緩存;默認(rèn)是:on
proxy_buffering off; # 關(guān)閉代理緩沖;默認(rèn)是:on
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 60; # 設(shè)定keep-alive超時(shí)時(shí)間為60秒
proxy_pass http://xxxx:xxxx;
proxy_redirect off;
proxy_connect_timeout 15; # 與upstream server的連接超時(shí)時(shí)間(沒(méi)有單位,最大不可以超過(guò)75s)
proxy_send_timeout 300; # 發(fā)送請(qǐng)求給upstream服務(wù)器的超時(shí)時(shí)間
proxy_read_timeout 300; # nginx會(huì)等待多長(zhǎng)時(shí)間來(lái)獲得請(qǐng)求的響應(yīng)
}
}
最主要的幾個(gè)配置:
- proxy_http_version 1.1;
- proxy_set_header Connection “”;
- proxy_cache off;
- proxy_buffering off;
- chunked_transfer_encoding on;
知識(shí)點(diǎn):
Nginx 是通過(guò)緩存響應(yīng)內(nèi)容來(lái)處理請(qǐng)求的。也就是說(shuō),當(dāng) Nginx 接收到完整的響應(yīng)后,才會(huì)將其發(fā)送給客戶端,因此默認(rèn)是不支持流式響應(yīng),需要手動(dòng)開(kāi)啟。
到此這篇關(guān)于Nginx的流式響應(yīng)配置實(shí)現(xiàn)小結(jié)的文章就介紹到這了,更多相關(guān)Nginx 流式響應(yīng)配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx 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-09
nginx轉(zhuǎn)發(fā)squid代理實(shí)現(xiàn)方式
本文介紹了如何使用nginx的stream模塊將客戶端請(qǐng)求轉(zhuǎn)發(fā)至squid服務(wù)器,首先概述了所需的服務(wù)器環(huán)境配置,接著詳細(xì)描述了nginx配置stream模塊與http模塊的方法,強(qiáng)調(diào)二者是平行關(guān)系,最后提供了具體的配置示例,并強(qiáng)調(diào)這些內(nèi)容是作者的經(jīng)驗(yàn)總結(jié)2026-04-04
簡(jiǎn)介Nginx服務(wù)器的Websockets配置方法
這篇文章主要介紹了簡(jiǎn)介Nginx服務(wù)器的Websockets配置方法,是使用Nginx服務(wù)器的網(wǎng)管的必備知識(shí)XD~需要的朋友可以參考下2015-06-06
Nginx出現(xiàn)403?Forbidden的幾種簡(jiǎn)單解決方式
這篇文章主要介紹了Nginx出現(xiàn)403?Forbidden的幾種解決思路,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
nginx外網(wǎng)訪問(wèn)內(nèi)網(wǎng)站點(diǎn)配置操作
這篇文章主要介紹了nginx外網(wǎng)訪問(wèn)內(nèi)網(wǎng)站點(diǎn)配置操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08
Nginx 反向代理與負(fù)載均衡運(yùn)行小結(jié)
Nginx還支持對(duì)后端服務(wù)器進(jìn)行健康檢查,當(dāng)某個(gè)服務(wù)器不可用時(shí),Nginx會(huì)自動(dòng)將流量重定向到其他可用的服務(wù)器,這篇文章給大家分享Nginx 反向代理與負(fù)載均衡是如何運(yùn)行的,感興趣的朋友一起看看吧2024-03-03
教你如何解決Nginx禁止ip加端口訪問(wèn)的問(wèn)題
這篇文章主要介紹了Nginx禁止ip加端口訪問(wèn)的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02
nginx配置中proxy_pass反向代理502的bug記錄
這篇文章主要介紹了nginx配置中proxy_pass反向代理502的bug記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01

