欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

nginx 499錯誤處理及nginx的配置參數(shù)小結(jié)

 更新時間:2024年09月19日 09:22:31   作者:我愛看明朝  
在項目容器化改造中,修改Nginx超時設置可解決499錯誤,本文就來介紹一下nginx 499錯誤處理及nginx的配置參數(shù)小結(jié),感興趣的可以了解一下

背景

近期響應集團降本增效,節(jié)省ci,stg機器,我們項目開始容器化,在改造過程中,鏈路的訪問發(fā)生了變化,導致出現(xiàn)了499,解決方如下

訪問鏈路: 域名—> ELB (內(nèi)網(wǎng)訪問) —> openrestry (stg環(huán)境,支持自定義lua腳本) —> ELB(提供服務固定ip) —> (容器集群)POd

499處理

nignx報499的原因是服務端響應超時,nginx主動斷開連接。例如:nginx配置默認超時時間為60s,當服務端接口響應為62s才返回結(jié)果,那么當60s時,nginx主動斷開連接。
1. 調(diào)整如下proxy_xxx_timeout
2. 優(yōu)化接口,提高接口的響應速度

server{
    location / {
        proxy_connect_timeout 200;
        proxy_send_timeout 200;
        proxy_read_timeout 200;
    }
}

proxy_connect_timeout: 控制與后端服務器建立連接的超時時間,單位是秒,默認是60秒。

proxy_read_timeout: 控制等待后端服務器響應的超時時間,單位是秒,默認是60秒。

proxy_send_timeout: 控制發(fā)送請求到后端服務器的超時時間,單位是秒,默認是60秒。

這三個參數(shù)都是在使用 nginx 作為反向代理時,用于限制與后端服務器通信的超時時間,從而避免代理服務器被后端服務器的響應阻塞而無法響應客戶端的請求。例如,如果后端服務器出現(xiàn)了異常或網(wǎng)絡故障,會導致響應的延遲或永遠不返回,此時代理服務器會等待超時時間,然后返回錯誤響應。

注意:在使用這些超時設定時,應當考慮應用程序的網(wǎng)絡和運行環(huán)境,以便確定適當?shù)某瑫r時間。超時時間設置過短可能導致請求失敗,而設置過長可能導致前端網(wǎng)站的響應變慢??梢赃m當根據(jù)實際情況調(diào)整,并進行測試,以確??煽啃院托阅?。參數(shù)值也不是越大越好,對于確實響應慢的接口,要進行性能優(yōu)化。

知識擴展: nginx配置參數(shù)

server{
    location / {
        proxy_ignore_client_abort  on;
        proxy_connect_timeout 200;
        proxy_send_timeout 200;
        proxy_read_timeout 200;
    }
}

proxy_ignore_client_abort: 用于實現(xiàn)“忽略客戶端終止”功能。默認情況下,“nginx”會將與客戶端的連接請求轉(zhuǎn)發(fā)到后端服務器,但如果客戶端中途斷開請求服務,則通常會導致到后端的連接被提前關(guān)閉。這時,后端程序可能會繼續(xù)執(zhí)行一段時間,但已經(jīng)無法將響應發(fā)送回代理服務器,因此可能導致代理服務器上的錯誤響應。

proxy_ignore_client_abort: off 默認配置,客戶端斷開連接會中止響應
proxy_ignore_client_abort: on 客戶端斷開連接不會中止響應,代理服務器將忽略客戶端請求終止,并讓后端服務器繼續(xù)響應,直到響應完成。

http:{

    fastcgi_connect_timeout 200;
    fastcgi_send_timeout 200;
    fastcgi_read_timeout 200; 
}

以上參數(shù)當你的技術(shù)選型里有包含F(xiàn)astCGI,可以考慮開啟上述fastcgi_xx_timeout參數(shù)。

如未接觸過,我們來簡單介紹下: FastCGI(Fast Common Gateway Interface)是一種 Web 應用程序的接口協(xié)議,它提出了一種新型的方式來處理動態(tài) Web 內(nèi)容。astCGI 和早期的 CGI 腳本處理方式不同,CGI 腳本在每次請求時都會啟動新的進程,這可能造成性能損失和資源浪費。而 FastCGI 利用了一些進程復用技術(shù),使得每個應用程序可以一直保持在內(nèi)存中的狀態(tài),等待下一次請求,大大提高了性能。

Tomcat容器并未內(nèi)置FastCGI功能,在標準的SpringBoot應用程序中,你需要特別安裝、配置和/或使用第三方 FastCGI 庫或框架來實現(xiàn)與 FastCGI 協(xié)議的通信。例如,可以使用 Mod_jk 來實現(xiàn) Tomcat 與前端 Web 服務器之間的 FastCGI 通信。

http {

    client_max_body_size 500m; //限制客戶端請求體超過配置的值,超過返回413
    client_body_buffer_size 10M; //
    # client_body_temp: /xx // 大于client_body_buffer_size是存儲的磁盤目錄
    keepalive_timeout  65s; //
    client_header_timeout 600s; //
    client_body_timeout  600s;  // 
    proxy_connect_timeout 200s;
    proxy_send_timeout    200s;
    proxy_read_timeout    200s;
    proxy_max_temp_file_size 0;

    limit_req_zone $binary_remote_addr zone=burstLimit:10m rate=40r/s;

    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_types text/plain text/css application/json application/x-javascript application/javascript text/javascript appliaction/xml;
    gzip_comp_level 3;
    gzip_disable "MSIE [1-6].(?!.*SV1)";
    gzip_vary off;
}

client_max_body_size: 限制客戶端請求體超過配置的值,超過返回413 Request Entity Too Large,在http,server,location均可配置。這個參數(shù)是針對單個請求體的大小,而不是控制所有請求的綜合大小。

client_body_buffer_size: 客戶端請求體數(shù)據(jù)到內(nèi)存時緩存區(qū)分配的大小。如果請求的數(shù)據(jù)小于這個配置直接將數(shù)據(jù)先在存在內(nèi)存,如果請求的值大于client_body_buffer_size小client_max_body_size,就會將數(shù)據(jù)先存儲到臨時文件中,臨時文件默認路徑是/tmp/,也可通過配置client_body_temp指定目錄

client_body_temp: 當請求體大于client_body_buffer_size小于client_max_body_size是,配置這個參數(shù)存儲到指定的磁盤路徑,注意這個需要修改權(quán)限(chomd),否則會報Permission denied

keepalive_timeout: 當使用http/1.1協(xié)議是,可以使用keepalive復用tcp的連接,減少tcp三次握手四次揮手建立網(wǎng)絡連接的時間。keepalive_time的意思是每次請求完畢后保持指定時間的連接,可以避免頻繁創(chuàng)建和關(guān)閉連接的過程。默認值是75s,若設置為0,表示禁止keepalive連接

client_header_timeout: 客戶端像服務端發(fā)送一個完整的request header的超時時間,默認60s,如果客戶端在指定時間內(nèi)沒有發(fā)送一個完整的request header,nginx返回http 408(request time out)

client_body_timeout: 戶端像服務端發(fā)送一個完整的request body的超時時間, 默認60s,如果客戶端在指定時間內(nèi)沒有接受到請求體數(shù)據(jù),注意不是整個請求提數(shù)據(jù)傳輸,是在接受到header后到開始傳輸body這個過程的超時時間(官方文檔: The timeout is set only for a period between two successive read operations, not for the transmission of the whole request body If a client does not transmit anything within this time, the request is terminated with the 408 (Request Time-out) error.), nginx返回http 408(request time out)。

proxy_max_temp_file_size: 緩存到磁盤的文件大小,如果設置為0,則不緩存到磁盤。如果超過了設置的值,則nginx將與proxy的服務器同步的傳遞內(nèi)容,則不在還緩沖到磁盤

limit_req_zone: nginx限流模塊,$binary_remote_addr表明限制的目標,remote_addr記錄的是ip信息占用7~15個字節(jié),binary_remote_addr表示壓縮的ip,僅占用4個字節(jié)。zone=name:size分配一個名為name的并且大小為size的內(nèi)存空間,用來存儲訪問的頻次信息;rate=40r/s表示同一個ip每秒只允許40個請求通過

gzip: on:開啟gzip壓縮靜態(tài)資源, off關(guān)閉

gzip_min_length: 1k 配置開啟壓縮的大小,資源大于這個的才壓縮,再小就不要壓縮

gzip_buffers 4: 16k 緩沖,壓縮在內(nèi)存緩沖幾塊,每塊多大

gzip_types: text/plain text/css application/json application/x-javascript application/javascript text/javascript appliaction/xml; 對那些類型的文件用壓縮

gzip_comp_level: 3; 壓縮級別([1-9]級別越高,壓的越小,越耗費CPU計算時間)

gzip_disable: “MSIE [1-6].(?!.*SV1)”; 正則匹配什么樣的uri不進行g(shù)zip壓縮,此處表示ie6及一下不啟用gzip(因為這些版本不支持)

gzip_vary: off 是否傳輸壓縮標志

nginx增加健康檢查

nginx開源版本沒有自帶負載均衡后端節(jié)點的健康檢查,但是通過額外的nginx_upstream_check_module模塊對后端節(jié)點做健康檢查。

upstream name{
 server 192.168.0.1:80;
 server 192.168.0.2:80;
 check interval=3000 rise=2 fail=5 timeout=1000 type=http;

}

對name的這個upstream負載均衡,每個節(jié)點3s檢測一次,請求2次正常則標記realserver狀態(tài)為up,如果檢測5次都失敗,則標記ralserver狀態(tài)為down,超時時間為1s.

各種負載均衡軟硬件

ELB HAproxy nginx openresty F5 LVS

HaProxy: 一款負載均衡軟件,與nginx角色一樣,支持TCP/HTTP兩種協(xié)議的負載均衡,使得其負載均衡功能非常豐富;支持8種左右的負載均衡算法,尤其是在http模式下,有非常多的實用的均衡算法;擁有一個功能出色的監(jiān)控頁面,實時了解系統(tǒng)當前的狀態(tài);功能強大的ACL支持,給用戶極大的方便(ACL access control list訪問控制列表: 符合ACL規(guī)則請求由backend指定的后端服務器池執(zhí)行基于ACL規(guī)則的負載均衡,不符合的可以直接中斷響應,也可以交由其他服務器執(zhí)行);自帶監(jiān)控檢查,nginx需要增加額外的模塊支持健康檢查。缺點是配置文件比較繁瑣,需要一定的技術(shù)水平和經(jīng)驗進行部署和維護。

ELB: AWS提供的云軟件負載均衡服務,實用云端的應用部署,有點易于使用;缺點是定制化自定義有限,對企業(yè)級需要可能不夠全面

F5: 負載均衡硬件,性能非常好,每秒處理的請求數(shù)可以達到百萬級,采購價格也非常貴十幾萬到百萬人民幣都有,適用于大型企業(yè)流量特別多的情況。

LVS: 軟件負載均衡,由阿里的章文嵩博士研發(fā),是國內(nèi)最早的自由軟件,配置方便,抗負載能力強;不足:不支持正則處理,不支持做動靜分離,對網(wǎng)絡環(huán)境比較依賴

openresty: 對nginx的擴展,自由度高支持實用lua及大量的第三方模塊,方便的搭建能夠處理高并發(fā),擴展性極高的web應用,網(wǎng)關(guān),從而將nginx從簡單的負載均衡,變成一個強大的網(wǎng)關(guān)、通用的web應用平臺。

參考

nginx官方文檔 Module ngx_http_core_module

Nginx的超時keeplive_timeout配置詳解

nginx限流方法一:limit_req&limit_req_zone限制處理速率

Haproxy 的 ACL 規(guī)則及實戰(zhàn)案例

Nginx和HAProxy對比,各有什么優(yōu)點與不足?

nginx負載均衡配置,宕機自動切換

到此這篇關(guān)于nginx 499錯誤處理及nginx的配置參數(shù)小結(jié)的文章就介紹到這了,更多相關(guān)nginx 499錯誤內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Nginx反向代理到Tomcat服務器

    詳解Nginx反向代理到Tomcat服務器

    本篇文章主要介紹了詳解Nginx反向代理到Tomcat服務器,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • Nginx DNS resolver配置實例

    Nginx DNS resolver配置實例

    這篇文章主要介紹了Nginx DNS resolver配置實例,本文講解在proxy_pass 和 upstream server 通信的時候需要手動指定 resolver,本文就給出了配置實例,需要的朋友可以參考下
    2015-01-01
  • nginx自定義變量與內(nèi)置預定義變量的使用

    nginx自定義變量與內(nèi)置預定義變量的使用

    這篇文章主要介紹了nginx自定義變量與內(nèi)置預定義變量的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • nginx+tomcat 通過域名訪問項目的實例

    nginx+tomcat 通過域名訪問項目的實例

    這篇文章主要介紹了nginx+tomcat 通過域名訪問項目的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Nginx下無法使用中文URL的解決方法

    Nginx下無法使用中文URL的解決方法

    最近發(fā)現(xiàn)有很多的url打不開,后來仔細觀察后發(fā)現(xiàn)是中文url的問題,所以這篇文章主要給大家介紹了Nginx下無法使用中文URL的解決方法,文中提供了兩種方法供大家參考學習,需要的朋友們下面來一起看看吧。
    2017-05-05
  • Nginx配置反向代理服務器實現(xiàn)在https網(wǎng)站中請求http資源

    Nginx配置反向代理服務器實現(xiàn)在https網(wǎng)站中請求http資源

    ?Nginx反向代理?是一種將客戶端請求轉(zhuǎn)發(fā)到后端服務器的技術(shù),主要用于負載均衡、提高安全性和提升性能,本文給大家介紹了Nginx配置反向代理服務器實現(xiàn)在https網(wǎng)站中請求http資源,需要的朋友可以參考下
    2025-03-03
  • Nginx路徑重寫方式

    Nginx路徑重寫方式

    這篇文章主要介紹了Nginx路徑重寫方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Nginx 出現(xiàn) 403 Forbidden 最終解決方法

    Nginx 出現(xiàn) 403 Forbidden 最終解決方法

    這篇文章給大家介紹了Nginx 出現(xiàn) 403 Forbidden 最終解決方法,下面分步驟給大家介紹的非常詳細,感興趣的的朋友一起看看吧
    2017-08-08
  • 詳解實現(xiàn)Nginx+Tomcat實現(xiàn)單IP、多域名、多站點的訪問

    詳解實現(xiàn)Nginx+Tomcat實現(xiàn)單IP、多域名、多站點的訪問

    這篇文章主要介紹了詳解實現(xiàn)Nginx+Tomcat實現(xiàn)單IP、多域名、多站點的訪問的相關(guān)資料,這里提供實例幫助到大家實現(xiàn)改功能,希望能幫助到大家,需要的朋友可以參考下
    2017-08-08
  • centos6.5下Nginx簡單安裝教程

    centos6.5下Nginx簡單安裝教程

    這篇文章主要為大家詳細介紹了centos6.5下Nginx的簡單安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07

最新評論