nginx是一款自由的、開源的、高效能的http伺服器和反向**伺服器;同時也是乙個imap、pop3、smtp**伺服器;nginx可以作為乙個http伺服器進行**的發布處理,另外nginx可以作為反向**進行負載均衡的實現。nginx使用基於事件驅動架構,使得其可以支援數以百萬級別的tcp連線。nginx是乙個跨平台伺服器,可以執行在linux,windows,freebsd,solaris,aix,mac os等作業系統上。
一、正向**
正向**,**的是客戶端,代客戶端發出請求,是乙個位於客戶端和原始伺服器(origin server)之間的伺服器,為了從原始伺服器取得內容,客戶端向**傳送乙個請求並指定目標(原始伺服器),然後**向原始伺服器轉交請求並將獲得的內容返回給客戶端。客戶端必須要進行一些特別的設定才能使用正向**。例如:通過在瀏覽器上設定**伺服器ip位址和埠號,訪問國外的**,就是正向**。正向**最大的特點是客戶端非常明確要訪問的伺服器位址,伺服器只清楚請求來自哪個**伺服器,而不清楚來自哪個具體的客戶端,正向**模式遮蔽或者隱藏了真實客戶端資訊。客戶端必須設定正向**伺服器,所以知道**伺服器的ip和埠也是必須的。
正向**的用途:
(1)訪問原來無法訪問的資源,如google
(2) 可以做快取,加速訪問資源
(3)對客戶端訪問授權,上網進行認證
(4)**可以記錄使用者訪問記錄(上網行為管理),對外隱藏使用者資訊
二、反向**
多個客戶端給伺服器傳送的請求,nginx伺服器接收到之後,按照一定的規則分發給了後端的業務處理伺服器進行處理。此時的請求**也就是客戶端是明確的,但是請求具體由哪台伺服器處理的並不明確了,nginx扮演的就是乙個反向**角色。
客戶端是無感知**的存在的,反向**對外都是透明的,訪問者並不知道自己訪問的是乙個**。因為客戶端不需要任何配置就可以訪問。
反向**,**的是服務端,代服務端接收請求,主要用於伺服器集群分布式部署的情況下,反向**隱藏了伺服器的資訊。
正向**和反向**可以存在一起:
三、負載均衡
客戶端傳送的,nginx反向**伺服器接收到的請求數量,即是所說的負載量。
請求數量按照一定的規則進行分發到不同的伺服器處理的規則,就是一種均衡規則。
將伺服器接收到的請求按照規則分發的過程,則稱為負載均衡。
nginx支援的負載均衡排程演算法方式如下:
輪詢:將請求按順序輪流地分配到後端伺服器上,它均衡地對待後端的每一台伺服器,而不關心伺服器實際的連線數和當前的系統負載。
加權輪詢法(預設,常用):接收到的請求按照權重分配到不同的後端伺服器,即使在使用過程中,某一台後端伺服器宕機,nginx會自動將該伺服器剔除出佇列,請求受理情況不會受到任何影響。 這種方式下,可以給不同的後端伺服器設定乙個權重值(weight),用於調整不同的伺服器上請求的分配率;權重資料越大,被分配到請求的機率越大;該權重值,主要是針對實際工作環境中不同的後端伺服器硬體配置進行調整的。
ip_hash(常用):每個請求按照發起客戶端的ip的hash結果進行匹配,這樣的演算法下乙個固定ip位址的客戶端總會訪問到同乙個後端伺服器,這也在一定程度上解決了集群部署環境下session共享的問題。
fair:智慧型調整排程演算法,動態的根據後端伺服器的請求處理到響應的時間進行均衡分配,響應時間短處理效率高的伺服器分配到請求的概率高,響應時間長處理效率低的伺服器分配到的請求少;結合了前兩者的優點的一種排程演算法。但是需要注意的是nginx預設不支援fair演算法,如果要使用這種排程演算法,請安裝upstream_fair模組。
url_hash:按照訪問的url的hash結果分配請求,每個請求的url會指向後端固定的某個伺服器,可以在nginx作為靜態伺服器的情況下提高快取效率。同樣要注意nginx預設不支援這種排程演算法,要使用的話需要安裝nginx的hash軟體包。
最小連線:優先選擇連線數最少,也就是壓力最小的後端伺服器,在會話較長的情況下可以考慮採取這種方式。
對比項\伺服器apachenginxlighttpd
proxy**
非常好非常好
一般rewriter
好非常好
一般fcgi不好好
非常好熱部署
不支援支援
不支援系統壓力
很大很小
比較小穩定性
好非常好
不好安全性好一般
一般靜態檔案處理
一般非常好
好反向**
一般非常好一般
參考文獻:
四、安裝配置nginx
1.安裝centos 7 epel倉庫
sudo yum install epel-release
2.安裝nginx
現在nginx儲存庫已經安裝在您的伺服器上,使用以下yum命令安裝nginx :
sudo yum install nginx
在對提示回答yes後,nginx將在伺服器上完成安裝。
3.啟動nginx
nginx不會自行啟動。要執行nginx,請輸入:
sudo systemctl start nginx
如果您正在執行防火牆,請執行以下命令以允許http和https通訊:
開啟瀏覽器輸入ip位址看到nginx的首頁就說明你啟動成功了
4.設定開機啟動
sudo systemctl enable nginx
5.配置nginx
使用yum進行安裝的nginx的配置檔案在/etc/nginx/nginx.conf
vim /etc/nginx/nginx.conf
nginx.conf:
# for more information on configuration, see:
# * official english documentation:
# * official russian documentation:
user nginx;
#nginx程序數,建議設定為等於cpu總核心數。
worker_processes auto;
#全域性錯誤日誌定義型別,[ debug | info | notice | warn | error | crit ]
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;#程序pid檔案
# load dynamic modules. see /usr/share/nginx/readme.dynamic.
include /usr/share/nginx/modules/*.conf;
events
#設定http伺服器,利用它的反向**功能提供負載均衡支援
6.nginx啟動和停止命令
啟動sudo systemctl start nginx
停止sudo systemctl stop nginx
原文:
Nginx及配置詳解
nginx是lgor sysoev為俄羅斯訪問量第二的rambler.ru站點設計開發的。從2004年發布至今,憑藉開源的力量,已經接近成熟與完善。nginx功能豐富,可作為http伺服器,也可作為反向 伺服器,郵件伺服器。支援fastcgi ssl virtual host url rewrite...
Nginx簡介及配置詳解 二
對於乙個大型 來說,隨著 訪問量的快速增長,單台伺服器已經無法承擔大量使用者的併發訪問,必須以增加伺服器的方式,提高計算機系統的處理能力,計算速度,進而滿足當前業務量的需求。那麼如何實現伺服器之間的協同功能呢?nginx提供的反向 和負載均衡功能是乙個很好的解決方案。反向 在nginx伺服器中,反向...
Nginx配置詳解
nginx的主要配置檔案是nginx.conf,位於安裝目錄下的nginx conf資料夾裡,主要的配置引數如下 定義nginx執行的使用者和使用者組 user nobody nobody nginx程序數,建議設定為等於cpu總核心數。worker processes 8 全域性錯誤日誌定義型別,...