Nginx

基本概念

Nginx同Apache同樣都是一種WEB服務器。基於REST架構風格,經過HTTP協議提供各類網絡服務。與Apache相比,Nginx輕量級,高併發。nginx

Nginx的用處:c++

1.Nginx是一款自由的、開源的、高性能的HTTP服務器和反向代理服務器;算法

2.Nginx能夠做爲反向代理進行負載均衡的實現。數據庫

3.Nginx是一個IMAP、POP三、SMTP代理服務器;vim

4.Nginx能夠做爲一個HTTP服務器進行網站的發佈處理後端

代理

正向代理緩存

它代理的是客戶端",是一個位於客戶端和原始服務器(origin server)之間的服務器,爲了從原始服務器取得內容,客戶端向代理髮送一個請求並指定目標(原始服務器),而後代理向原始服務器轉交請求並將得到的內容返回給客戶端。客戶端必需要進行一些特別的設置才能使用正向代理安全

正向代理最大的特色是客戶端很是明確要訪問的服務器地址;服務器只清楚請求來自哪一個代理服務器,而不清楚來自哪一個具體的客戶端;正向代理模式屏蔽或者隱藏了真實客戶端信息。服務器

正向代理的用途:
(1)訪問原來沒法訪問的資源,如Google
(2) 能夠作緩存,加速訪問資源
(3)對客戶端訪問受權,上網進行認證
(4)代理能夠記錄用戶訪問記錄(上網行爲管理),對外隱藏用戶信息網絡

反向代理

"它代理的是服務端",主要用於服務器集羣分佈式部署的狀況下,反向代理隱藏了服務器的信息。

客戶端是無感知代理的存在的,訪問者並不知道本身訪問的是一個代理,也不知道具體請求到哪臺服務器,Nginx就是扮演了一個反向代理角色。

反向代理的做用:
(1)保證內網的安全,一般將反向代理做爲公網訪問地址,Web服務器是內網
(2)負載均衡,經過反向代理服務器來優化網站的負載

項目場景

一般狀況下,咱們在實際項目操做時,正向代理和反向代理頗有可能會存在在一個應用場景中,正向代理代理客戶端的請求去訪問目標服務器,目標服務器是一個反向單例服務器,反向代理了多臺真實的業務處理服務器。具體的拓撲圖以下:

負載均衡

基本概念

將服務器接收到的請求按照規則分發的過程,稱爲負載均衡。

 分類

DNS負載均衡

最簡單也是最多見的一種負載均衡方式,通常用來實現地理級別的均衡。

優勢:

1.簡單、成本低。負載均衡工做交給DNS服務器處理,無需本身開發和維護。

2.就近訪問,提高訪問速度。DNS解析時能夠根據請求來源的IP,解析成距離用戶最近的服務器地址,加快訪問速度。

缺點:

1.更新不及時。DNS緩存時間長,影響用戶正常的使用業務。

2.擴展性差。DNS負載均衡的控制權在域名商那裏,沒法根據業務特色作定製化功能。

3.DNS支持的算法少,沒法感知後端服務器的狀態。

硬件負載均衡

目前業界硬件負載均衡設備有兩款:F五、A10。

優勢:

1.功能強大。支持各層級負載均衡,支持全面的負載均衡算法,支持全局負載均衡。

2.性能強大。軟件負載均衡10萬級併發已經很厲害了,硬件負載均衡能夠支持100萬級以上併發。

3.穩定性高。

4.支持安全防禦。具有防火牆、防DDOS攻擊等安全功能。

缺點:

1.價格昂貴。最普通的一臺F5就是一臺「馬6」,好一點的就是「寶馬、Q7」了。

2.擴展性差。沒法進行擴展和定製化。

軟件負載均衡

常見的有Nginx、LVS。其中Nginx是軟件的7層負載均衡,LVS是Linux內核的4層負載均衡。4層和7層區別就在協議和靈活性。Nginx支持HTTP、E-mail協議,而LVS與協議無關,幾乎全部應用均可以作,例如,聊天、數據庫等。

優勢:簡單、便宜、靈活(能夠經過Nginx插件來實現業務定製化)。

缺點:性能通常(5萬TPS)、通常不具有防火牆和放DDOS攻擊等安全功能。

Nginx負載均衡算法

1.weight輪詢(默認):接收到的請求按照順序逐一分配到不一樣的後端服務器,即便在使用過程當中,某一臺後端服務器宕機,Nginx會自動將該服務器剔除出隊列,請求受理狀況不會受到任何影響。 這種方式下,能夠給不一樣的後端服務器設置一個權重值(weight),用於調整不一樣的服務器上請求的分配率;權重數據越大,被分配到請求的概率越大;該權重值,主要是針對實際工做環境中不一樣的後端服務器硬件配置進行調整的。
2.ip_hash:每一個請求按照發起客戶端的ip的hash結果進行匹配,這樣的算法下一個固定ip地址的客戶端總會訪問到同一個後端服務器,這也在必定程度上解決了集羣部署環境下session共享的問題。
3.fair:智能調整調度算法,動態的根據後端服務器的請求處理到響應的時間進行均衡分配,響應時間短處理效率高的服務器分配到請求的機率高,響應時間長處理效率低的服務器分配到的請求少;結合了前二者的優勢的一種調度算法。可是須要注意的是Nginx默認不支持fair算法,若是要使用這種調度算法,請安裝upstream_fair模塊。
4.url_hash:按照訪問的url的hash結果分配請求,每一個請求的url會指向後端固定的某個服務器,能夠在Nginx做爲靜態服務器的狀況下提升緩存效率。一樣要注意Nginx默認不支持這種調度算法,要使用的話須要安裝Nginx的hash軟件包。

Nginx安裝

1、安裝編譯工具及庫文件

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

2、安裝 PCRE

  PCRE 做用是讓 Nginx 支持 Rewrite 功能。

# cd /usr/local/nginx
# wget http://downloads.sourceforge.net/project/pcre/pcre/8.42/pcre-8.42.tar.gz
# tar zxvf pcre-8.42.tar.gz
# cd pcre-8.42
# ./configure
# make && make install
查看pcre版本:pcre-config --version

3、安裝 Nginx

# cd /usr/local/nginx/
# wget http://nginx.org/download/nginx-1.9.9.tar.gz
# tar zxvf nginx-1.9.9.tar.gz
# cd nginx-1.9.9
# ./configure --prefix=/usr/local/nginx/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/nginx/pcre-8.42
# make && make install
查看Nginx版本:/usr/local/nginx/nginx/sbin/nginx -v
查看nginx位置:whereis nginx

4、配置用戶

# /usr/sbin/groupadd nginx
# /usr/sbin/useradd -g nginx nginx

 

5、經常使用命令

啓動:/usr/local/nginx/nginx/sbin/nginx
中止:/usr/local/nginx/nginx/sbin/nginx -s stop
重啓:/usr/local/nginx/nginx/sbin/nginx -s reopen
編輯conf:vim /usr/local/nginx/nginx/conf/nginx.conf
從新加載conf:/usr/local/nginx/nginx/sbin/nginx -s reload
相關文章
相關標籤/搜索