1. 程式人生 > >Nginx詳解-伺服器叢集

Nginx詳解-伺服器叢集

Nginx是什麼

代理伺服器一般是指區域網內部的機器通過代理伺服器傳送請求到網際網路上的伺服器,代理伺服器一般作用在客戶端。應用比如:GoAgent,FQ神器.

 

 一個完整的代理請求過程為:客戶端首先與代理伺服器建立連線,接著根據代理伺服器所使用的代理協議,請求對目標伺服器建立連線、或者獲得目標伺服器的指定資源。 Web代理(proxy)伺服器是網路的中間實體。 代理位於Web客戶端和Web伺服器之間,扮演“中間人”的角色。HTTP的代理伺服器即是Web伺服器又是Web客戶端。

代理伺服器是介於客戶端和Web伺服器之間的另一臺伺服器,有了它之後,瀏覽器不是直接到Web伺服器去取回網頁而是向代理伺服器發出請求,訊號會先送到代理伺服器,由代理伺服器來取回瀏覽器所需要的資訊並傳送給你的瀏覽器。

正向代理 :是一個位於客戶端和原始伺服器(origin server)之間的伺服器,為了從原始伺服器取得內容,客戶端向代理髮送一個請求並指定目標(原始伺服器),然後代理向原始伺服器轉交請求並將獲得的內容返回給客戶端。客戶端必須要進行一些特別的設定才能使用正向代理。

反向代理伺服器:在伺服器端接受客戶端的請求,然後把請求分發給具體的伺服器進行處理,然後再將伺服器的響應結果反饋給客戶端。Nginx就是其中的一種反向代理伺服器軟體。

NginxNginx ("engine x") Nginx (engine x是俄羅斯人Igor Sysoev(塞索耶夫)編寫的一款高效能的 HTTP 和反向代理伺服器。也是一個IMAP/POP3/SMTP代理伺服器;也就是說,Nginx本身就可以託管網站,進行HTTP服務處理,也可以作為反向代理伺服器使用。

說明:客戶端必須設定正向代理伺服器,當然前提是要知道正向代理伺服器的IP地址,還有代理程式的埠。

反向代理正好與正向代理相反,對於客戶端而言代理伺服器就像是原始伺服器,並且客戶端不需要進行任何特別的設定。客戶端向反向代理的名稱空間(name-space)中的內容傳送普通請求,接著反向代理將判斷向何處(原始伺服器)轉交請求,並將獲得的內容返回給客戶端。

  

使用者A始終認為它訪問的是原始伺服器B而不是代理伺服器Z,但實用際上反向代理伺服器接受使用者A的應答,從原始資源伺服器B中取得使用者A的需求資源,然後傳送給使用者A。由於防火牆的作用,只允許代理伺服器Z訪問原始資源伺服器B。儘管在這個虛擬的環境下,防火牆和反向代理的共同

作用保護了原始資源伺服器B,但使用者A並不知情。 

Nginx的應用現狀

    Nginx 已經在俄羅斯最大的入口網站── Rambler Mediawww.rambler.ru)上運行了3年時間,同時俄羅斯超過20%的虛擬主機平臺採用Nginx作為反向代理伺服器。在國內,已經有 淘寶、新浪部落格、新浪播客、網易新聞、六間房、56.comDiscuz!、水木社群、豆瓣、YUPOO、海內、迅雷線上 等多家網站使用 Nginx 作為Web伺服器或反向代理伺服器。

Nginx的特點

  • 跨平臺:Nginx 可以在大多數 Unix like OS編譯執行,而且也有Windows的移植版本。
  • 配置異常簡單:非常容易上手。配置風格跟程式開發一樣,神一般的配置
  • 非阻塞、高併發連線:資料複製時,磁碟I/O的第一階段是非阻塞的。官方測試能夠支撐5萬併發連線,在實際生產環境中跑到23萬併發連線數.(這得益於Nginx使用了最新的epoll模型)
  • 事件驅動:通訊機制採用epoll模型,支援更大的併發連線。

Nginx的事件處理機制

對於一個基本的web伺服器來說,事件通常有三種類型,網路事件、訊號、定時器。 

首先看一個請求的基本過程:建立連線---接收資料---傳送資料 。

再次看系統底層的操作 :上述過程(建立連線---接收資料---傳送資料)在系統底層就是讀寫事件。

 1)如果採用阻塞呼叫的方式,當讀寫事件沒有準備好時,必然不能夠進行讀寫事件,那麼久只好等待,等事件準備好了,才能進行讀寫事件。那麼請求就會被耽擱 。阻塞呼叫會進入核心等待,cpu就會讓出去給別人用了,對單執行緒的worker來說,顯然不合適,當網路事件越多時,大家都在等待呢,cpu空閒下來沒人用,cpu利用率自然上不去了,更別談高併發了 。

 2)既然沒有準備好阻塞呼叫不行,那麼採用非阻塞方式。非阻塞就是,事件,馬上返回EAGAIN, 告訴你,事件還沒準備好呢,你慌什麼,過會再來吧。好吧,你過一會,再來檢查一下事件,直到事件準備好了為止,在這期間,你就可以先去做其它事情,然後再 來看看事件好了沒。雖然不阻塞了,但你得不時地過來檢查一下事件的狀態,你可以做更多的事情了,但帶來的開銷也是不小的 

小結:非阻塞通過不斷檢查事件的狀態來判斷是否進行讀寫操作,這樣帶來的開銷很大。 

3)因此才有了非同步非阻塞的事件處理機制。具體到系統呼叫就是像select/poll/epoll/kqueue這樣的系統呼叫。他們提供了一種機制,讓你可以同時監控多個事件,呼叫他們是阻塞的,但可以設定超時時間,在超時時間之內,如果有事件準備好了,就返回。這種機制解決了我們上面兩個問題。 

epoll為例:當事件沒有準備好時,就放入epoll(佇列)裡面。如果有事件準備好了,那麼就去處理;如果事件返回的是EAGAIN,那麼繼續將其放入epoll裡面。從而,只要有事件準備好了,我們就去處理她,只有當所有時間都沒有準備好時,才在epoll裡 面等著。這樣,我們就可以併發處理大量的併發了,當然,這裡的併發請求,是指未處理完的請求,執行緒只有一個,所以同時能處理的請求當然只有一個了,只是在 請求間進行不斷地切換而已,切換也是因為非同步事件未準備好,而主動讓出的。這裡的切換是沒有任何代價,你可以理解為迴圈處理多個準備好的事件,事實上就是 這樣的。 

4)與多執行緒的比較:

     與多執行緒相比,這種事件處理方式是有很大的優勢的,不需要建立執行緒,每個請求佔用的記憶體也很少,沒有上下文切換,事件處理非常的輕量級。併發數再多也不會導致無謂的資源浪費(上下文切換)。

小結:通過非同步非阻塞的事件處理機制,Nginx實現由程序迴圈處理多個準備好的事件,從而實現高併發和輕量級。 

master/worker結構:一個master程序,生成一個或多個worker程序

記憶體消耗小:處理大併發的請求記憶體消耗非常小。在3萬併發連線下,開啟的10Nginx 程序才消耗150M記憶體(15M*10=150M) 成本低廉:Nginx為開源軟體,可以免費使用。而購買F5 BIG-IPNetScaler等硬體負載均衡交換機則需要十多萬至幾十萬人民幣

內建的健康檢查功能:如果 Nginx Proxy 後端的某臺 Web 伺服器宕機了,不會影響前端訪問。

節省頻寬:支援 GZIP 壓縮,可以新增瀏覽器本地快取的 Header 頭。

穩定性高:用於反向代理,宕機的概率微乎其微

Nginx的不為人知的特點

1nginx代理和後端web伺服器間無需長連線;

2、接收使用者請求是非同步的,即先將使用者請求全部接收下來,再一次性發送後後端web伺服器,極大的減輕後端web伺服器的壓力

3、傳送響應報文時,是邊接收來自後端web伺服器的資料,邊傳送給客戶端的

4、網路依賴型低。NGINX對網路的依賴程度非常低,理論上講,只要能夠ping通就可以實施負載均衡,而且可以有效區分內網和外網流量

5、支援伺服器檢測。NGINX能夠根據應用伺服器處理頁面返回的狀態碼、超時資訊等檢測伺服器是否出現故障,並及時返回錯誤的請求重新提交到其它節點上

Nginx的內部(程序)模型

nginx是以多程序的方式來工作的,當然nginx也是支援多執行緒的方式的,只是我們主流的方式還是多程序的方式,也是nginx的預設方式。nginx採用多程序的方式有諸多好處 .

 (1) nginx在啟動後,會有一個master程序和多個worker程序。master程序主要用來管理worker程序,包含:接收來自外界的訊號,向各worker程序傳送訊號,監控 worker程序的執行狀態,worker程序退出後(異常情況下),會自動重新啟動新的worker程序。而基本的網路事件,則是放在worker程序中來處理了 。多個worker程序之間是對等的,他們同等競爭來自客戶端的請求,各程序互相之間是獨立的 。一個請求,只可能在一個worker程序中處理,一個worker程序,不可能處理其它程序的請求。 worker程序的個數是可以設定的,一般我們會設定與機器cpu核數一致,這裡面的原因與nginx的程序模型以及事件處理模型是分不開的 。

(2)Master接收到訊號以後怎樣進行處理(./nginx -s reload ?首先master程序在接到訊號後,會先重新載入配置檔案,然後再啟動新的程序,並向所有老的程序傳送訊號,告訴他們可以光榮退休了。新的程序在啟動後,就開始接收新的請求,而老的程序在收到來自master的訊號後,就不再接收新的請求,並且在當前程序中的所有未處理完的請求處理完成後,再退出 .

(3) worker程序又是如何處理請求的呢?我們前面有提到,worker程序之間是平等的,每個程序,處理請求的機會也是一樣的。當我們提供80埠的http服務時,一個連線請求過來,每個程序都有可能處理這個連線,怎麼做到的呢?首先,每個worker程序都是從master程序fork過來,在master程序裡面,先建立好需要listensocket之後,然後再fork出多個worker程序,這樣每個worker程序都可以去accept這個socket(當然不是同一個socket,只是每個程序的這個socket會監控在同一個ip地址與埠,這個在網路協議裡面是允許的)。一般來說,當一個連線進來後,所有在accept在這個socket上面的程序,都會收到通知,而只有一個程序可以accept這個連線,其它的則accept失敗,這是所謂的驚群現象。當然,nginx也不會視而不見,所以nginx提供了一個accept_mutex這個東西,從名字上,我們可以看這是一個加在accept上的一把共享鎖。有了這把鎖之後,同一時刻,就只會有一個程序在accpet連線,這樣就不會有驚群問題了。accept_mutex是一個可控選項,我們可以顯示地關掉,預設是開啟的。當一個worker程序在accept這個連線之後,就開始讀取請求,解析請求,處理請求,產生資料後,再返回給客戶端,最後才斷開連線,這樣一個完整的請求就是這樣的了。我們可以看到,一個請求,完全由worker程序來處理,而且只在一個worker程序中處理。

(4):nginx採用這種程序模型有什麼好處呢?採用獨立的程序,可以讓互相之間不會影響,一個程序退出後,其它程序還在工作,服務不會中斷,master程序則很快重新啟動新的worker程序。當然,worker程序的異常退出,肯定是程式有bug了,異常退出,會導致當前worker上的所有請求失敗,不過不會影響到所有請求,所以降低了風險。當然,好處還有很多,大家可以慢慢體會。

(5).有人可能要問了,nginx採用多worker的方式來處理請求,每個worker裡面只有一個主執行緒,那能夠處理的併發數很有限啊,多少個worker就能處理多少個併發,何來高併發呢?非也,這就是nginx的高明之處,nginx採用了非同步非阻塞的方式來處理請求,也就是說,nginx是可以同時處理成千上萬個請求的 .對於IIS伺服器每個請求會獨佔一個工作執行緒,當併發數上到幾千時,就同時有幾千的執行緒在處理請求了。這對作業系統來說,是個不小的挑戰,執行緒帶來的記憶體佔用非常大,執行緒的上下文切換帶來的cpu開銷很大,自然效能就上不去了,而這些開銷完全是沒有意義的。我們之前說過,推薦設定worker的個數為cpu的核數,在這裡就很容易理解了,更多的worker數,只會導致程序來競爭cpu資源了,從而帶來不必要的上下文切換。而且,nginx為了更好的利用多核特性,提供了cpu親緣性的繫結選項,我們可以將某一個程序繫結在某一個核上,這樣就不會因為程序的切換帶來cache的失效 

Nginx是如何處理一個請求

首先,nginx在啟動時,會解析配置檔案,得到需要監聽的埠與ip地址,然後在nginxmaster程序裡面,先初始化好這個監控的socket(建立socket,設定addrreuse等選項,繫結到指定的ip地址埠,再listen),然後再fork(一個現有程序可以呼叫fork函式建立一個新程序。由fork建立的新程序被稱為子程序 )出多個子程序出來,然後子程序會競爭accept新的連線。此時,客戶端就可以向nginx發起連線了。當客戶端與nginx進行三次握手,與nginx建立好一個連線後,此時,某一個子程序會accept成功,得到這個建立好的連線的socket,然後建立nginx對連線的封裝,即ngx_connection_t結構體。接著,設定讀寫事件處理函式並新增讀寫事件來與客戶端進行資料的交換。最後,nginx或客戶端來主動關掉連線,到此,一個連線就壽終正寢了。 

當然,nginx也是可以作為客戶端來請求其它server的資料的(如upstream模組),此時,與其它server建立的連線,也封裝在ngx_connection_t中。作為客戶端,nginx先獲取一個ngx_connection_t結構體,然後建立socket,並設定socket的屬性( 比如非阻塞)。然後再通過新增讀寫事件,呼叫connect/read/write來呼叫連線,最後關掉連線,並釋放ngx_connection_t。 

說明:nginx在實現時,是通過一個連線池來管理的,每個worker程序都有一個獨立的連線池,連線池的大小是worker_connections。這裡的連線池裡面儲存的其實不是真實的連線,它只是一個worker_connections大小的一個ngx_connection_t結構的陣列。並且,nginx會通過一個連結串列free_connections來儲存所有的空閒ngx_connection_t,每次獲取一個連線時,就從空閒連線連結串列中獲取一個,用完後,再放回空閒連線連結串列裡面。 

在這裡,很多人會誤解worker_connections這個引數的意思,認為這個值就是nginx所能建立連線的最大值。其實不然,這個值是表示每個worker程序所能建立連線的最大值,所以,一個nginx能建立的最大連線數,應該是worker_connections * worker_processes。當然,這裡說的是最大連線數,對於HTTP請求本地資源來說,能夠支援的最大併發數量是worker_connections * worker_processes,而如果是HTTP作為反向代理來說,最大併發數量應該是worker_connections * worker_processes/2。因為作為反向代理伺服器,每個併發會建立與客戶端的連線和與後端服務的連線,會佔用兩個連線。 

Nginx典型的應用場景

負載均衡技術在現有網路結構之上提供了一種廉價、有效、透明的方法,來擴充套件網路裝置和伺服器的頻寬、增加吞吐量、加強網路資料處理能力、提高網路的 靈活性和可用性。它有兩方面的含義:首先,大量的併發訪問或資料流量分擔到多臺節點裝置上分別處理,減少使用者等待響應的時間;其次,單個重負載的運算分擔 到多臺節點裝置上做並行處理,每個節點裝置處理結束後,將結果彙總,返回給使用者,系統處理能力得到大幅度提高 

Nginx的應用

2、解壓到磁碟任一目錄

3、修改配置檔案:具體參考備註。

4、啟動服務:直接執行nginx.exe,缺點控制檯視窗關閉,服務關閉。守護程序的方式啟動:start nginx.exe

5、停止服務:nginx -s stop

重新載入配置:nginx -s  reload

Nginx常見配置說明

worker_processes 8;

#nginx程序數,建議設定為等於CPU總核心數

worker_connections 65535;

#單個程序最大連線數(最大連線數=連線數*程序數)

client_header_buffer_size 32k; #上傳檔案大小限制

large_client_header_buffers 4 64k; #設定請求緩

client_max_body_size 8m; #設定請求緩

autoindex on; #開啟目錄列表訪問,合適下載伺服器,預設關閉。

tcp_nopush on; #防止網路阻塞

tcp_nodelay on; #防止網路阻塞

keepalive_timeout 120; #長連線超時時間,單位是秒

gzip on; #開啟gzip壓縮輸出

gzip_min_length 1k; #最小壓縮檔案大小

gzip_buffers 4 16k; #壓縮緩衝區

gzip_http_version 1.0; #壓縮版本(預設1.1,前端如果是squid2.5請使用1.0

gzip_comp_level 2; #壓縮等級

upstream blog.ha97.com {

#upstream的負載均衡,weight是權重,可以根據機器配置定義權重。weigth引數表示權值,權值越高被分配到的機率越大。

server 192.168.80.121:80 weight=3;

server 192.168.80.122:80 weight=2;

server 192.168.80.123:80 weight=3;

}

#虛擬主機的配置

server

{

#監聽埠

listen 80;

#域名可以有多個,用空格隔開

server_name www.ha97.com ha97.com;

index index.html index.htm index.php;

root /data/www/ha97;

location ~ .*.(php|php5)?$

{

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

include fastcgi.conf;

}

模組引數

    #定義Nginx執行的使用者和使用者組        
    user www www;              
    #nginx程序數,建議設定為等於CPU總核心數。        
    worker_processes 8;        
      
    #全域性錯誤日誌定義型別,[ debug | info | notice | warn | error | crit ]  
      
    error_log ar/loginx/error.log info;  
             
    #程序檔案  
      
    pid ar/runinx.pid;        
       
    #一個nginx程序開啟的最多檔案描述符數目,理論值應該是最多開啟檔案數(系統的值ulimit -n)與nginx程序數相除,但是nginx分配請求並不均勻,  
    所以建議與ulimit -n的值保持一致。  
      
    worker_rlimit_nofile 65535;               
      
    #工作模式與連線數上限        
    events        
    {        
    #參考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本核心中的高效能網路I/O模型,  
    如果跑在FreeBSD上面,就用kqueue模型。  
      
    use epoll;        
    #單個程序最大連線數(最大連線數=連線數*程序數)       
    worker_connections 65535;        
    }  
             
    #設定http伺服器        
    http        
    {        
    include mime.types; #副檔名與檔案型別對映表       
    default_type application/octet-stream; #預設檔案型別        
    #charset utf-8; #預設編碼        
    server_names_hash_bucket_size 128; #伺服器名字的hash表大小        
    client_header_buffer_size 32k; #上傳檔案大小限制        
    large_client_header_buffers 4 64k; #設定請求緩       
    client_max_body_size 8m; #設定請求緩        
    sendfile on; #開啟高效檔案傳輸模式,sendfile指令指定nginx是否呼叫sendfile函式來輸出檔案,對於普通應用設為 on,如果用來進行下載等應用磁碟IO重負載應用,  
    可設定為off,以平衡磁碟與網路I/O處理速度,降低系統的負載。注意:如果圖片顯示不正常把這個改成off。        
    autoindex on; #開啟目錄列表訪問,合適下載伺服器,預設關閉。        
    tcp_nopush on; #防止網路阻塞        
    tcp_nodelay on; #防止網路阻塞        
    keepalive_timeout 120; #長連線超時時間,單位是秒       
            
    #FastCGI相關引數是為了改善網站的效能:減少資源佔用,提高訪問速度。下面引數看字面意思都能理解。        
    fastcgi_connect_timeout 300;        
    fastcgi_send_timeout 300;        
    fastcgi_read_timeout 300;        
    fastcgi_buffer_size 64k;        
    fastcgi_buffers 4 64k;        
    fastcgi_busy_buffers_size 128k;        
    fastcgi_temp_file_write_size 128k;         
      
    #gzip模組設定        
    gzip on; #開啟gzip壓縮輸出        
    gzip_min_length 1k; #最小壓縮檔案大小        
    gzip_buffers 4 16k; #壓縮緩衝區        
    gzip_http_version 1.0; #壓縮版本(預設1.1,前端如果是squid2.5請使用1.0)        
    gzip_comp_level 2; #壓縮等級        
    gzip_types text/plain application/x-javascript text/css application/xml;  
      
    #壓縮型別,預設就已經包含textml,所以下面就不用再寫了,寫上去也不會有問題,但是會有一個warn。        
    gzip_vary on;        
    #limit_zone crawler $binary_remote_addr 10m; #開啟限制IP連線數的時候需要使用        
       
      
    upstream blog.ha97.com {        
    #upstream的負載均衡,weight是權重,可以根據機器配置定義權重。weigth引數表示權值,權值越高被分配到的機率越大。        
    server 192.168.80.121:80 weight=3;        
    server 192.168.80.122:80 weight=2;        
    server 192.168.80.123:80 weight=3;        
    }               
      
    #虛擬主機的配置        
    server       
    {        
    #監聽埠        
    listen 80;        
    #域名可以有多個,用空格隔開        
    server_name www.ha97.com ha97.com;       
    index index.html index.htm index.php;        
    root /data/www/ha97;        
    location ~ .*.(php|php5)?$        
    {        
    fastcgi_pass 127.0.0.1:9000;        
    fastcgi_index index.php;        
    include fastcgi.conf;        
    }        
    #圖片快取時間設定        
    location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$        
    {        
    expires 10d;        
    }        
    #JS和CSS快取時間設定        
    location ~ .*.(js|css)?$        
    {        
    expires 1h;        
    }        
    #日誌格式設定        
    log_format access '$remote_addr - $remote_user [$time_local] "$request" '        
    '$status $body_bytes_sent "$http_referer" '        
    '"$http_user_agent" $http_x_forwarded_for';  
      
    #定義本虛擬主機的訪問日誌       
    access_log ar/loginx/ha97access.log access;               
      
    #對 "/" 啟用反向代理        
    location / {        
    proxy_pass http://127.0.0.1:88;        
    proxy_redirect off;        
    proxy_set_header X-Real-IP $remote_addr;  
      
    #後端的Web伺服器可以通過X-Forwarded-For獲取使用者真實IP        
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
      
    #以下是一些反向代理的配置,可選。  
      
    proxy_set_header Host $host;        
    client_max_body_size 10m; #允許客戶端請求的最大單檔案位元組數        
    client_body_buffer_size 128k; #緩衝區代理緩衝使用者端請求的最大位元組數,        
    proxy_connect_timeout 90; #nginx跟後端伺服器連線超時時間(代理連線超時)        
    proxy_send_timeout 90; #後端伺服器資料回傳時間(代理髮送超時)        
    proxy_read_timeout 90; #連線成功後,後端伺服器響應時間(代理接收超時)        
    proxy_buffer_size 4k; #設定代理伺服器(nginx)儲存使用者頭資訊的緩衝區大小        
    proxy_buffers 4 32k; #proxy_buffers緩衝區,網頁平均在32k以下的設定        
    proxy_busy_buffers_size 64k; #高負荷下緩衝大小(proxy_buffers*2)        
    proxy_temp_file_write_size 64k;  
      
    #設定快取資料夾大小,大於這個值,將從upstream伺服器傳        
    }  
                 
    #設定檢視Nginx狀態的地址        
    location /NginxStatus {        
    stub_status on;        
    access_log on;        
    auth_basic "NginxStatus";        
    auth_basic_user_file confpasswd;        
    #htpasswd檔案的內容可以用apache提供的htpasswd工具來產生。        
    }  
                   
    #本地動靜分離反向代理配置        
    #所有jsp的頁面均交由tomcat或resin處理        
    location ~ .(jsp|jspx|do)?$ {        
    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_pass http://127.0.0.1:8080;        
    }  
      
    #所有靜態檔案由nginx直接讀取不經過tomcat或resin        
    location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$        
    { expires 15d; }        
    location ~ .*.(js|css)?$        
    { expires 1h; }        
    }        
    }  

案例

Nginx+IIS伺服器搭建伺服器叢集

 

配置靜態資源

  location ~ \.(jpg|png|jpeg|bmp|gif|swf|css)$  
            {  
                expires 30d;  
                 root /nginx-1.4.7;#root:  
                break;  
            } 

擴充套件

相關推薦

Nginx-伺服器叢集

Nginx是什麼 代理伺服器:一般是指區域網內部的機器通過代理伺服器傳送請求到網際網路上的伺服器,代理伺服器一般作用在客戶端。應用比如:GoAgent,FQ神器.    一個完整的代理請求過程為:客戶端首先與代理伺服器建立連線,接著根據代理伺服器所使用的代理協議,請求對目標伺服器建立連線、或者獲得目

Nginx(二)操作

ive nal set gen local pcr 大小寫 cpu 目錄結構 一、前言二、Nginx安裝三、Nginx的配置文件詳解四、nginx配置之http段五、其他模塊六、實驗一、前言http://www.nginx.cn/doc/ nginx安裝等各個操作界面介紹

Nginx(四)模塊

nginx https fastcgi 一、Nginx之目錄瀏覽二、Nginx之log模塊三、Ning之gzip模塊四、Nginx之https服務五、Nginx之fastCGI模塊 一、配置Nginx提供目錄瀏覽功能 1.修改nginx配置文件 server { listen

Nginx

兩個 ces inux 占用 file 分享圖片 www. ini 一個 1.Nginx是輕量級的HTTP服務器 性能上:占用很少的系統資源,支持高並發,達到更高的訪問效率; 功能上:Nginx是優秀的代理服務器和負載均衡服務器; 安裝上:安裝簡單、配置靈活。 2.下載

CentOS7下安裝nginx

環境:CentOS7   下載連結:http://101.110.118.24/isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1804.iso 安裝教程可參考百度百科。    今天

nginx - 詳細配置說明

本文為看視訊《Nginx入門到實踐》總結的學習筆記。 一、伺服器基礎配置 遠端連結伺服器 ssh 使用者名稱@公網ip 複製程式碼 預設的使用者名稱是root,假如公網 ip 是 a.b.c.d, 那連結命名就是 ssh [email protected] 複製程式碼 下載安裝基礎庫 yu

CynosDB技術——儲存叢集管理

本文由騰訊雲資料庫發表 前言 CynosDB是架構在CynosFS之上的分散式關係資料庫系統,為最大化利用儲存資源,平衡資源之間的競爭,檢查資源使用情況,需要一套高效穩定的分散式叢集管理系統(SCM: Storage Cluster Manager),SCM使用Etcd作為儲存,利用Etcd R

CynosDB技術——儲存叢集管理【文末有福利】

本文由騰訊雲資料庫發表 前言 CynosDB是架構在CynosFS之上的分散式關係資料庫系統,為最大化利用儲存資源,平衡資源之間的競爭,檢查資源使用情況,需要一套高效穩定的分散式叢集管理系統(SCM: Storage Cluster Manager),SCM使用Etcd作為儲存,利用Etcd Raft演算

NginxNginx

一、什麼是Nginx?       Nginx是一個使用c語言開發的高效能的http伺服器及反向代理伺服器。Nginx是一款高效能的http 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器。由俄羅斯的程式設計師Igor Syso

【linux技術】nginx

1 配置檔案 # worker程序數,通常設定成和cpu的數量相等 worker_processes auto; # 設定worker程序最大檔案開啟數;避免出現too many open files worker_rlimit_nofile 65535; # ng

Nginx(正向代理、反向代理、負載均衡原理、ginx反向代理原理和配置講解

nginx概述 nginx是一款自由的、開源的、高效能的HTTP伺服器和反向代理伺服器;同時也是一個IMAP、POP3、SMTP代理伺服器;nginx可以作為一個HTTP伺服器進行網站的釋出處理,另外nginx可以作為反向代理進行負載均衡的實現。 這裡主要通過三

Redis之-叢集方案:高效能(使用原生Redis Cluster)(四)

對以前的內容進行一下總結和複習。 瞭解Redis的基本引數配置和使用。 瞭解事件訂閱和持久化儲存方式(RDB和AOF)。 Redis叢集方案:高可用(使用Redis Sentinel),官網Rdeis3.x推薦三主三從的方式,參考(https://www.cnblogs

Redis之-叢集方案:高效能(Codis3.2+Redis Cluster)(五)

[[email protected] opt]# /usr/local/zookeeper/bin/zkCli.sh -server 192.168.10.101:2181 Connecting to 192.168.10.101:2181 2017-05-12 17:27:41,481 [my

Nginx(四)

5. Nginx虛擬主機配置 同一臺機器上可能跑多個站點,即多個域名。在生產環境下,我們通常會配置虛擬主機來滿足需求。 Nginx預設虛擬主機 預設虛擬主機 就是不管什麼域名解析到該伺服器上,都會訪問到預設虛擬主機。 前面講過,nginx主配置檔案 nginx.conf

redis——redis叢集搭建和使用(二)

上一章我寫到redis簡單的介紹和如何單機的使用,當我們redis相當重要的時候那麼接下來就需要搭建一個叢集了。 1 Redis叢集的介紹 1.1 redis-cluster(叢集)架構圖 架構細節: (1)所有的redis節點彼此互聯(PING-PONG機制),

Redis之-叢集方案:高可用(使用Redis Sentinel)(三)

對以前的內容進行一下總結和複習。 瞭解Redis的基本引數配置和使用。瞭解事件訂閱和持久化儲存方式(RDB和AOF)。Redis叢集方案:高可用(使用Redis Sentinel),官網Rdeis3.x推薦三主三從的方式,後面再介紹,參考(https://www.cnb

系統技術非業餘研究 » 伺服器記憶體頻寬計算和使用情況測量

前段時間我們在MYSQL調優上發現有瓶頸,懷疑是過多拷貝記憶體,導致記憶體頻寬用完。在Linux下CPU的使用情況有top工具, IO裝置的使用情況有iostat工具,就是沒有記憶體使用情況的測量工具。 我們可以看到大量的memcpy和字串拷貝(可以用systemtap來測量),但是像簡單的資料移

Nginx(正向代理、反向代理、負載均衡原理)

http { ## # 基礎配置 ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # serv

使用Nginx配置Tomcat伺服器叢集

背景: 網際網路飛速發展的今天,大使用者量高併發已經成為網際網路的主體.怎樣能讓一個網站能夠承載幾萬個或幾十萬個使用者的持續訪問呢?這是一些中小網站急需解決的問題。用單機tomcat搭建的網站,在比較理想的狀態下能夠承受的併發訪問量在150到200左右。按照併發訪問量佔總使用者數量的5%到10%這樣計算,單

mysql服務效能優化—my.cnf_my.ini配置說明(伺服器16G記憶體)

此配置是生產線上使用的配置,對各引數添加了中文說明 這配置已經優化的不錯了,如果你的mysql沒有什麼特殊情況的話,可以直接使用該配置引數 MYSQL伺服器my.cnf配置文件詳解 硬體:記憶體16G [client] port = 3306 socket = /