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ā)送給客戶(hù)端,因此默認(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報(bào)錯(cuò)connect() failed(111: Connection refus
本文主要介紹了nginx報(bào)錯(cuò)connect() failed(111: Connection refused)while connecting to upstream解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
Nginx內(nèi)網(wǎng)環(huán)境開(kāi)啟https雙協(xié)議的實(shí)現(xiàn)
本文主要介紹了Nginx內(nèi)網(wǎng)環(huán)境開(kāi)啟https雙協(xié)議,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02
Nginx?反向代理緩存(proxy_cache)的實(shí)現(xiàn)
Nginx的緩存加速功能是由proxy_cache和fastcgi_cache兩個(gè)功能模塊完成,本文主要介紹了Nginx?反向代理緩存(proxy_cache)的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-05-05
504?Gateway?Timeout網(wǎng)關(guān)超時(shí)的根源及完美解決方法
在日常開(kāi)發(fā)和運(yùn)維過(guò)程中,504?Gateway?Timeout?錯(cuò)誤是常見(jiàn)的網(wǎng)絡(luò)問(wèn)題之一,尤其是在使用反向代理(如?Nginx)或負(fù)載均衡時(shí),遇到這種錯(cuò)誤會(huì)導(dǎo)致網(wǎng)站無(wú)法訪問(wèn),嚴(yán)重影響用戶(hù)體驗(yàn),這篇文章主要介紹了504?Gateway?Timeout網(wǎng)關(guān)超時(shí)完美解決方法,需要的朋友可以參考下2025-08-08
阿里云Nginx配置https實(shí)現(xiàn)域名訪問(wèn)項(xiàng)目(圖文教程)
這篇文章主要介紹了阿里云Nginx配置https實(shí)現(xiàn)域名訪問(wèn)項(xiàng)目(圖文教程),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Nginx部署SpringBoot項(xiàng)目的實(shí)現(xiàn)
本文主要介紹了Nginx部署SpringBoot項(xiàng)目的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
Nginx代理Vue項(xiàng)目出現(xiàn)Invalid Host header問(wèn)題及解決
在使用Nginx的upstream對(duì)Vue項(xiàng)目進(jìn)行負(fù)載均衡時(shí),如果代理地址無(wú)法訪問(wèn)目標(biāo)地址且頁(yè)面報(bào)錯(cuò)InvalidHostheader(無(wú)效主機(jī)頭),可能是由于Vue項(xiàng)目的主機(jī)檢查配置導(dǎo)致的,解決方法是在Vue項(xiàng)目的webpack.dev.js文件中的devServer下添加disableHostCheck:true,跳過(guò)主機(jī)檢查2024-12-12

