4 回答

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個(gè)贊
似乎請求超時(shí)對您來說不是問題。這是連接超時(shí)。我認(rèn)為我們需要看看標(biāo)題
連接
AFAIK,標(biāo)頭定義,連接應(yīng)該是持久的,或者誰有權(quán)維護(hù)/關(guān)閉它。如果連接為 ,則連接將持久。對于保持活動狀態(tài)的連接,客戶端偶爾會發(fā)送 TCP ping,以確保服務(wù)器仍處于活動狀態(tài)并保持連接。根據(jù)卷曲,默認(rèn)情況下,此時(shí)間是每 60 秒一次。Connection
keep-alive
現(xiàn)在,必須將 配置為接受連接,并使用 keepalive_timeout
指令使其保持活動狀態(tài)一段時(shí)間。如果不存在,則不會使連接保持活動狀態(tài)。nginx
nginx
這應(yīng)該就是nginx在日志中說499的原因。HTTP499是nginx中的一個(gè)控制錯(cuò)誤,它說客戶端關(guān)閉了連接。在你的情況下關(guān)閉了它。為什么要關(guān)閉它?因?yàn)?nginx 沒有響應(yīng) 60 秒的 TCP ping,因?yàn)槲磫⒂帽3只顒訝顟B(tài)。curl
curl
將keepalive_timeout
添加到 ~500 或高于應(yīng)用程序超時(shí)的值應(yīng)該可以解決您的問題。
現(xiàn)在,為什么它直接與雄貓合作?我認(rèn)為春天使活動超時(shí)是無限的或非常高的值。通常在雄貓中也有它的60秒。
我希望這能解決你的問題。

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊
我想這是由于許多其他事情而可能發(fā)生的問題之一。這是一個(gè)對我有用的解決方案(我也在以下位置遇到錯(cuò)誤:/var/log/nginx/error.log
2020/12/30 21:47:47 [錯(cuò)誤] 26765#26765: *13064 上游超時(shí) (110: 連接超時(shí)) 連接到上游時(shí), 客戶端: XXX, 服務(wù)器: example.com, 請求: “GET /eshop HTTP/1.0”, 上游: “http://[::1]:8080/error_50x.html”, 主機(jī): “example.com”
奇怪的是,這并沒有發(fā)生在我的筆記本電腦上,而只發(fā)生在我的服務(wù)器上。所以我檢查了IP,結(jié)果發(fā)現(xiàn)這可能是因?yàn)槿鄙伲海?地址。當(dāng)我將其添加到 lo 網(wǎng)絡(luò)設(shè)備時(shí),我無法復(fù)制超時(shí)。
sudo ip a add ::1/128 dev lo
下一篇:(這是我的理解,我不是100%確定:)此外,由于保持與localhost Java服務(wù)連接的開銷似乎高于僅刪除該連接并在發(fā)出另一個(gè)請求時(shí)再次連接,因此建議對代理使用以下設(shè)置(在nginx的站點(diǎn).conf中):
proxy_http_version 1.1; proxy_set_header Connection "";
請參閱 https://stackoverflow.com/a/10396874/3223505

TA貢獻(xiàn)1793條經(jīng)驗(yàn) 獲得超6個(gè)贊
由于您的配置缺少proxy_http_version鍵,因此可能仍無法為上游啟用 Keepalive。
引用自:https://www.nginx.com/blog/tuning-nginx/#proxy_http_version
要啟用與上游服務(wù)器的保持活動連接,還必須在配置中包含以下指令:
proxy_http_version 1.1; proxy_set_header Connection "";
我也會按照Kris的建議將keepalive_timeout保留在配置中。

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊
嘗試將超時(shí)設(shè)置放在 /etc/nginx/conf.d/timeout.conf 中(如果沒有,請創(chuàng)建一個(gè))。設(shè)置以下設(shè)置,
proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600;
添加回答
舉報(bào)