nginx詳解及配置

2021-09-25 04:07:44 字數 4166 閱讀 9590

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 全域性錯誤日誌定義型別,...