Nginx的流式響應(yīng)配置實現(xiàn)小結(jié)
Nginx的流式響應(yīng)配置
使用ChatGPT的能力在聊天時來實現(xiàn)打字機效果,因此需要服務(wù)端接口進行流式響應(yīng),碰到了幾個問題:
1、服務(wù)端明明配置了響應(yīng)頭的Content-Type為:text/event-stream,但前端仍然不是流式接收內(nèi)容。
2、雖然前端能以流式接收服務(wù)端的響應(yīng)內(nèi)容,但內(nèi)容接收完畢,長連接并未關(guān)閉,導(dǎo)致前端還以為服務(wù)端有數(shù)據(jù),會一直請求服務(wù)端,最后導(dǎo)致超時。
最后發(fā)現(xiàn)是nginx的問題,由于本地對接的時候并未啟用nginx,所以本地對接沒有任何問題。而線上使用nginx請求轉(zhuǎn)發(fā),有些配置是有默認(rèn)參數(shù)的,所以會失敗。因此,在這里分享一下,如果小伙們遇到同樣的問題,可以試一試。
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為長連接;默認(rèn)為:no proxy_cache off; # 關(guān)閉緩存;默認(rèn)是:on proxy_buffering off; # 關(guān)閉代理緩沖;默認(rèn)是:on chunked_transfer_encoding on; # 開啟分塊傳輸編碼 tcp_nopush on; # 開啟TCP NOPUSH選項,禁止Nagle算法 tcp_nodelay on; # 開啟TCP NODELAY選項,禁止延遲ACK算法 keepalive_timeout 60; # 設(shè)定keep-alive超時時間為60秒 proxy_pass http://xxxx:xxxx; proxy_redirect off; proxy_connect_timeout 15; # 與upstream server的連接超時時間(沒有單位,最大不可以超過75s) proxy_send_timeout 300; # 發(fā)送請求給upstream服務(wù)器的超時時間 proxy_read_timeout 300; # nginx會等待多長時間來獲得請求的響應(yīng) } }
最主要的幾個配置:
- proxy_http_version 1.1;
- proxy_set_header Connection “”;
- proxy_cache off;
- proxy_buffering off;
- chunked_transfer_encoding on;
知識點:
Nginx 是通過緩存響應(yīng)內(nèi)容來處理請求的。也就是說,當(dāng) Nginx 接收到完整的響應(yīng)后,才會將其發(fā)送給客戶端,因此默認(rèn)是不支持流式響應(yīng),需要手動開啟。
到此這篇關(guān)于Nginx的流式響應(yīng)配置實現(xiàn)小結(jié)的文章就介紹到這了,更多相關(guān)Nginx 流式響應(yīng)配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
nginx報錯connect() failed(111: Connection refus
本文主要介紹了nginx報錯connect() failed(111: Connection refused)while connecting to upstream解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06Nginx內(nèi)網(wǎng)環(huán)境開啟https雙協(xié)議的實現(xiàn)
本文主要介紹了Nginx內(nèi)網(wǎng)環(huán)境開啟https雙協(xié)議,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02Nginx?反向代理緩存(proxy_cache)的實現(xiàn)
Nginx的緩存加速功能是由proxy_cache和fastcgi_cache兩個功能模塊完成,本文主要介紹了Nginx?反向代理緩存(proxy_cache)的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-05-05504?Gateway?Timeout網(wǎng)關(guān)超時的根源及完美解決方法
在日常開發(fā)和運維過程中,504?Gateway?Timeout?錯誤是常見的網(wǎng)絡(luò)問題之一,尤其是在使用反向代理(如?Nginx)或負(fù)載均衡時,遇到這種錯誤會導(dǎo)致網(wǎng)站無法訪問,嚴(yán)重影響用戶體驗,這篇文章主要介紹了504?Gateway?Timeout網(wǎng)關(guān)超時完美解決方法,需要的朋友可以參考下2025-08-08阿里云Nginx配置https實現(xiàn)域名訪問項目(圖文教程)
這篇文章主要介紹了阿里云Nginx配置https實現(xiàn)域名訪問項目(圖文教程),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09Nginx代理Vue項目出現(xiàn)Invalid Host header問題及解決
在使用Nginx的upstream對Vue項目進行負(fù)載均衡時,如果代理地址無法訪問目標(biāo)地址且頁面報錯InvalidHostheader(無效主機頭),可能是由于Vue項目的主機檢查配置導(dǎo)致的,解決方法是在Vue項目的webpack.dev.js文件中的devServer下添加disableHostCheck:true,跳過主機檢查2024-12-12