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 502 Bad Gateway錯(cuò)誤常見(jiàn)的4種原因和解決方法
這篇文章主要介紹了Nginx 502 Bad Gateway錯(cuò)誤常見(jiàn)的4種原因和解決方法,本文適用FastCGI環(huán)境,其中多數(shù)原因通過(guò)配置相關(guān)參數(shù)即可解決,需要的朋友可以參考下2015-05-05Nginx配置Https免費(fèi)證書訪問(wèn)步驟
這篇文章主要為大家介紹了Nginx配置Https免費(fèi)證書訪問(wèn)步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08Ubuntu16.04上為Nginx創(chuàng)建自簽名SSL證書
SSL證書是實(shí)現(xiàn)HTTPS的關(guān)鍵組成部分,本文主要介紹了Ubuntu16.04上為Nginx創(chuàng)建自簽名SSL證書,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-05-05nginx強(qiáng)制使用https訪問(wèn)的方法(http跳轉(zhuǎn)到https)
這篇文章主要介紹了nginx強(qiáng)制使用https訪問(wèn)的方法(http跳轉(zhuǎn)到https),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-01-01Nginx http運(yùn)行狀況健康檢查配置過(guò)程解析
這篇文章主要介紹了Nginx http運(yùn)行狀況健康檢查配置過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08使用Nginx和Lua進(jìn)行JWT校驗(yàn)介紹
大家好,本篇文章主要講的是使用Nginx和Lua進(jìn)行JWT校驗(yàn)介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2021-12-12Nginx服務(wù)器中設(shè)置禁止訪問(wèn)文件或目錄的方法
這篇文章主要介紹了Nginx服務(wù)器中設(shè)置禁止訪問(wèn)文件或目錄的方法,對(duì)于協(xié)同遠(yuǎn)程管理服務(wù)器的情況來(lái)講很有實(shí)用性,需要的朋友可以參考下2015-07-07使用google-perftools優(yōu)化nginx在高并發(fā)時(shí)的性能的教程(完整版)
如果使用googler開(kāi)發(fā)的google-perftools優(yōu)化Nginx和MySQL的內(nèi)存管理,性能將會(huì)有一定程度的提升。特別是對(duì)高并發(fā)下的服務(wù)器,效果更明顯2013-02-02