最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nginx反向代理下的長(zhǎng)連接實(shí)現(xiàn)

 更新時(shí)間:2024年11月25日 11:13:33   作者:喵星程序猿  
本文主要介紹了Nginx反向代理下的長(zhǎng)連接實(shí)現(xiàn),包括客戶(hù)端到Nginx和Nginx到后端服務(wù)器之間的長(zhǎng)連接設(shè)置,具有一定的參考價(jià)值,感興趣的可以了解一下

一、nginx使用場(chǎng)景

大型應(yīng)用架構(gòu)中,一般會(huì)使用nginx反向代理,分為三層:

1.調(diào)用層,瀏覽器或APP;

2.中間層,反向代理nginx;

3.服務(wù)層,server一般是apche、tomcat

請(qǐng)求調(diào)用過(guò)程:

1.瀏覽器/app發(fā)起請(qǐng)求

2.DNS解析網(wǎng)址為ip地址

3.通過(guò)外網(wǎng)ip訪問(wèn)nginx

4.nginx發(fā)送請(qǐng)求給內(nèi)網(wǎng)ip的server

上面架構(gòu),要想支持全鏈路的長(zhǎng)連接,需要做到兩點(diǎn):

1.從client到nginx的連接是長(zhǎng)連接;

2.從nginx到server的連接是長(zhǎng)連接;

二、長(zhǎng)連接設(shè)置

1.client到nginx的長(zhǎng)連接:

由于目前瀏覽器默認(rèn)使用HTTP/1.1,請(qǐng)求header中默認(rèn)設(shè)置Connection:keep-alive,所以只需在nginx配置中做如下配置:

http {
       keepalive_timeount 120s 120s;
       keepalive_requests 10000;
}

#語(yǔ)法

keepalive_timeout timeout [header_timeout]

第一個(gè)參數(shù)(timeout):設(shè)置keep_alive客戶(hù)端(瀏覽器)連接在服務(wù)端(nginx端)保持開(kāi)啟的超時(shí)值(默認(rèn)75s);值為0會(huì)禁用keep_alive客戶(hù)端連接;

第二個(gè)參數(shù)(header_timeout):可選,在響應(yīng)的header中設(shè)置值“Keep-Alive:timeout=time”;通??梢圆挥迷O(shè)置;

keepalive_requests這個(gè)配置項(xiàng)用于設(shè)置一個(gè)keep-alive連接上可以服務(wù)的請(qǐng)求最大數(shù)量,當(dāng)達(dá)到配置的最大請(qǐng)求數(shù)時(shí),連接會(huì)被關(guān)閉,默認(rèn)值為100.具體過(guò)程時(shí)指一個(gè)keep-alive連接建立之后,nginx會(huì)為這個(gè)連接設(shè)置一個(gè)計(jì)數(shù)器,記錄這個(gè)長(zhǎng)連接上已經(jīng)接收并處理的客戶(hù)端請(qǐng)求的數(shù)量,一旦達(dá)到設(shè)置的最大值時(shí),nginx會(huì)強(qiáng)行關(guān)閉這個(gè)長(zhǎng)連接,此時(shí)如果客戶(hù)端有新請(qǐng)求,就需要重新建立新的長(zhǎng)連接。

注:在QPS較高的場(chǎng)景下,服務(wù)端需要將keepalive_requests設(shè)置大一些,默認(rèn)數(shù)值就不夠了,否則服務(wù)端可能會(huì)出現(xiàn)大量的TIME_WAIT狀態(tài)的TCP連接數(shù)異常!另外nginx(version 1.15.3)在Upstream內(nèi)增加了keepalive_requests配置項(xiàng),默認(rèn)值也是100,也是需要手動(dòng)設(shè)置,而且這兩個(gè)數(shù)量可以不一致,一般服務(wù)端要設(shè)置的大些,因?yàn)槎鄶?shù)情況是一個(gè)nginx代理對(duì)應(yīng)多個(gè)服務(wù)端。

2.nginx和server的長(zhǎng)連接

默認(rèn)情況下,nginx訪問(wèn)后端都是用的短連接(HTTP/1.0)一個(gè)請(qǐng)求來(lái)了,nginx會(huì)新開(kāi)一個(gè)端口和后端建立連接,后端執(zhí)行完畢后主動(dòng)關(guān)閉該tcp連接。為了讓nginx和后端server(nginx稱(chēng)之為upstream)之間保持長(zhǎng)連接,典型設(shè)置如下:

http {
         upstream http_backend {
                  server 192.168.2.154:8080;
                  server 192.168.2.109:8080;
                  keepalive 32;                  # 長(zhǎng)連接緩存池大小為32
                  keepalive_timeout  120s;       # 長(zhǎng)連接失效時(shí)間
                  keepalive_requests 2000;       # 每條長(zhǎng)連接最大復(fù)用請(qǐng)求數(shù)為2000
          }

        server {
                 location /http/ {
                 proxy_pass http://http_backend;
                 proxy_http_version 1.1;        # 啟用HTTP/1.1版本與被代理服務(wù)器建立連接
                 proxy_set_header Connection "Keep-Alive";  # 設(shè)置發(fā)送被代理服務(wù)器請(qǐng)求頭屬性字段Connection
         }
 }

nginx 與被代理服務(wù)器間建立的長(zhǎng)連接是通過(guò)啟用 HTTP/1.1 版本協(xié)議實(shí)現(xiàn)的。由于 HTTP 代理模塊默認(rèn)會(huì)將發(fā)往被代理服務(wù)器的請(qǐng)求頭屬性字段 Connection 的值設(shè)置為 Close,因此需要通過(guò)配置指令設(shè)置請(qǐng)求頭屬性字段 Connection 的內(nèi)容為“Keep-Alive”或者空值。

另外upstream中的keepalive_timeout和keepalive_requests參數(shù)與上面的含義一樣,不做過(guò)多解析,需要重點(diǎn)關(guān)注keepalive參數(shù),他的含義是指設(shè)置到upstream服務(wù)器的空閑keepalive連接的最大數(shù),當(dāng)這個(gè)數(shù)量被突破時(shí),最近最少使用的連接將被關(guān)閉,另外這個(gè)參數(shù)不會(huì)限制一個(gè)nginx worker進(jìn)程到upstream服務(wù)器連接的總數(shù)量,有點(diǎn)像線程池中的核心線程數(shù)。

注:keepalive參數(shù)設(shè)置一定要合理,尤其對(duì)于QPS比較高的場(chǎng)景,推薦做一下估算,根據(jù)QPS和平均響應(yīng)時(shí)間大概計(jì)算出需要長(zhǎng)連接的數(shù)量,盡量避免系統(tǒng)運(yùn)行時(shí)產(chǎn)生連接數(shù)量的反復(fù)震蕩,比如keepalive設(shè)置為10,前一秒系統(tǒng)qps較低,只需50個(gè)長(zhǎng)連接,用完立馬關(guān)閉其中50-10=40個(gè)連接,而后一秒系統(tǒng)qps突增,需要150個(gè)連接,空缺了150-10=140個(gè)連接,此時(shí)nginx不得不新建140個(gè)新連接來(lái)滿足要求。

三、問(wèn)題總結(jié)

綜上所述,nginx反向代理的情況下,tcp長(zhǎng)連接設(shè)置完成。在實(shí)際系統(tǒng)應(yīng)用長(zhǎng)連接的場(chǎng)景中,可能會(huì)出現(xiàn)大量TIME_WAIT的情況,這里簡(jiǎn)單做個(gè)總結(jié):

1.導(dǎo)致nginx端出現(xiàn)大量TIME_WAIT的情況有兩種:

a.keepalive_requests設(shè)置比較小,高并發(fā)下超過(guò)此值后nginx會(huì)強(qiáng)制關(guān)閉和客戶(hù)端的長(zhǎng)連接;(主動(dòng)關(guān)閉連接后導(dǎo)致nginx出現(xiàn)TIME_WAIT)

b.keepalive設(shè)置比較?。臻e數(shù)太?。?,導(dǎo)致高并發(fā)下nginx會(huì)頻繁出現(xiàn)連接數(shù)震蕩,不停的關(guān)閉、開(kāi)啟和后端server的長(zhǎng)連接;

2.導(dǎo)致后端server端出現(xiàn)大量TIME_WAIT的情況:

nginx沒(méi)有打開(kāi)和后端的長(zhǎng)連接,即:沒(méi)有設(shè)置proxy_http_version 1.1和proxy_set_header Connection "Keep-Alive",從而導(dǎo)致后端server每次請(qǐng)求后就關(guān)閉連接,高并發(fā)下就會(huì)出現(xiàn)server端的大量TIME_WAIT.

到此這篇關(guān)于nginx反向代理下的長(zhǎng)連接實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)nginx反向代理長(zhǎng)連接內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx服務(wù)器屏蔽與禁止屏蔽網(wǎng)絡(luò)爬蟲(chóng)的方法

    Nginx服務(wù)器屏蔽與禁止屏蔽網(wǎng)絡(luò)爬蟲(chóng)的方法

    今天小編就為大家分享一篇關(guān)于Nginx服務(wù)器屏蔽與禁止屏蔽網(wǎng)絡(luò)爬蟲(chóng)的方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • nginx部署前端vue項(xiàng)目教程

    nginx部署前端vue項(xiàng)目教程

    要在Nginx上部署前端Vue項(xiàng)目,首先在Vue項(xiàng)目根目錄構(gòu)建,將構(gòu)建文件上傳至服務(wù)器,并在Nginx配置文件中配置publicPath為/,以確保靜態(tài)文件正確引用,接著編輯Nginx配置文件,設(shè)置相應(yīng)路徑和反向代理等配置,保存后重啟Nginx服務(wù)
    2025-09-09
  • nginx安裝并轉(zhuǎn)發(fā)socket服務(wù)實(shí)現(xiàn)方式

    nginx安裝并轉(zhuǎn)發(fā)socket服務(wù)實(shí)現(xiàn)方式

    文章指導(dǎo)如何安裝編譯工具、PCRE和Nginx,并通過(guò)修改配置文件添加stream塊實(shí)現(xiàn)端口轉(zhuǎn)發(fā),將9999/801端口分別映射至9988/1557端口
    2025-07-07
  • 一文詳解Nginx的強(qiáng)緩存和協(xié)商緩存

    一文詳解Nginx的強(qiáng)緩存和協(xié)商緩存

    這篇文章主要為大家詳細(xì)介紹了Nginx中強(qiáng)緩存和協(xié)商緩存的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-03-03
  • Nginx下修改WordPress固定鏈接導(dǎo)致無(wú)法訪問(wèn)的問(wèn)題解決

    Nginx下修改WordPress固定鏈接導(dǎo)致無(wú)法訪問(wèn)的問(wèn)題解決

    這篇文章主要介紹了Nginx下修改WordPress固定鏈接導(dǎo)致無(wú)法訪問(wèn)的問(wèn)題解決,同時(shí)作者也給出了官方關(guān)于修改固定鏈接的方法,需要的朋友可以參考下
    2015-07-07
  • nginx封空user_agent實(shí)現(xiàn)封禁迅雷的方法

    nginx封空user_agent實(shí)現(xiàn)封禁迅雷的方法

    nginx封空user_agent實(shí)現(xiàn)封禁迅雷的方法,需要的朋友可以參考下。
    2010-11-11
  • Nginx代理同域名前后端分離項(xiàng)目的完整步驟

    Nginx代理同域名前后端分離項(xiàng)目的完整步驟

    這篇文章主要給大家介紹了關(guān)于Nginx代理同域名前后端分離項(xiàng)目的完整步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Nginx在高并發(fā)架構(gòu)中配置靜態(tài)文件地址的實(shí)戰(zhàn)指南

    Nginx在高并發(fā)架構(gòu)中配置靜態(tài)文件地址的實(shí)戰(zhàn)指南

    在高并發(fā)架構(gòu)中,Nginx不僅僅是一個(gè)Web服務(wù)器,更是整個(gè)系統(tǒng)的流量守門(mén)人和性能加速器,為什么你的網(wǎng)站明明用了Nginx,卻依然感覺(jué)慢?為什么一上并發(fā)就出現(xiàn)502/504錯(cuò)誤,今天,我們就深入剖析如何通過(guò)精準(zhǔn)配置Nginx靜態(tài)文件參數(shù),需要的朋友可以參考下
    2026-01-01
  • Nginx中break與last的區(qū)別詳析

    Nginx中break與last的區(qū)別詳析

    這篇文章主要給大家介紹了關(guān)于Nginx中break與last區(qū)別的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Nginx和vue編譯后的存放位置的配置實(shí)踐

    Nginx和vue編譯后的存放位置的配置實(shí)踐

    這篇文章主要介紹了Nginx和vue編譯后的存放位置的配置過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-09-09

最新評(píng)論

抚宁县| 理塘县| 重庆市| 安达市| 凤凰县| 临桂县| 沾益县| 永福县| 金川县| 衡东县| 新乡县| 辽阳县| 本溪| 新源县| 三穗县| 清镇市| 嘉祥县| 锡林郭勒盟| 乳源| 宽城| 石棉县| 洪泽县| 石柱| 南川市| 建平县| 易门县| 鹤岗市| 英吉沙县| 三穗县| 安国市| 兴宁市| 出国| 海丰县| 彰化县| 休宁县| 犍为县| 神池县| 汶上县| 永德县| 台湾省| 崇仁县|