nginx的原理與配置

2021-08-18 19:35:00 字數 2522 閱讀 3755

一、原理

nginx是一款自由的、開源的、高效能的http伺服器和反向**伺服器;同時也是乙個imap、pop3、smtp**伺服器;nginx可以作為乙個http伺服器進行**的發布處理,另外nginx可以作為反向**進行負載均衡的實現。

nginx主要功能在於兩方面:反向****發)和負載均衡(分發)。

首先,反向**的意思簡單來說就是客戶端向乙個網域名稱傳送請求,但是客戶端不知道具體是那個伺服器會處理它的請求,因為請求發到反向**了,反向**根據網域名稱知道是請求什麼服務,然後發向處理相應服務請求的伺服器。

然後,負載均衡,上面說到反向**把服務的請求發到了相應的伺服器,但是請求同乙個服務的請求過多時怎麼辦,伺服器會受不住,這時候就可以把伺服器改為伺服器們。反向**把服務的請求按照一定的演算法把請求分發給負責相應服務的伺服器們,這個過程就是負載均衡。

分發的演算法有:

weight輪詢(預設):接收到的請求按照順序逐一分配到不同的後端伺服器,即使在使用過程中,某一台後端伺服器宕機,nginx會自動將該伺服器剔除出佇列,請求受理情況不會受到任何影響。 這種方式下,可以給不同的後端伺服器設定乙個權重值(weight),用於調整不同的伺服器上請求的分配率;權重資料越大,被分配到請求的機率越大;該權重值,主要是針對實際工作環境中不同的後端伺服器硬體配置進行調整的。

ip_hash:每個請求按照發起客戶端的ip的hash結果進行匹配,這樣的演算法下乙個固定ip位址的客戶端總會訪問到同乙個後端伺服器,這也在一定程度上解決了集群部署環境下session共享的問題。

fair:智慧型調整排程演算法,動態的根據後端伺服器的請求處理到響應的時間進行均衡分配,響應時間短處理效率高的伺服器分配到請求的概率高,響應時間長處理效率低的伺服器分配到的請求少;結合了前兩者的優點的一種排程演算法。但是需要注意的是nginx預設不支援fair演算法,如果要使用這種排程演算法,請安裝upstream_fair模組

url_hash:按照訪問的url的hash結果分配請求,每個請求的url會指向後端固定的某個伺服器,可以在nginx作為靜態伺服器的情況下提高快取效率。同樣要注意nginx預設不支援這種排程演算法,要使用的話需要安裝nginx的hash軟體包

二、命令

安裝:yum install nginx

命令:nginx啟動,可以用nginx -h檢視全部命令。

nginx -s reload(每次修改配置後都要reload一下)

nginx -s stop/quit 停止

三、配置

main                                #

全域性配置

}

配置檔案在etc/nginx/nginx.conf

如上述配置檔案所示,主要由6個部分組成:

main:用於進行nginx全域性資訊的配置

events:用於nginx工作模式的配置

http:用於進行http協議資訊的一些配置

server:用於進行伺服器訪問資訊的配置

location:用於進行訪問路由的配置

upstream:用於進行負載均衡的配置

如果只是簡單的使用,只需要配置service模組以及upstream模組就好。其他的模組用預設的。

srever模組配置是http模組中的乙個子模組,用來定義乙個虛擬訪問主機,也就是乙個虛擬伺服器的配置資訊

server 

核心配置資訊如下:

location模組是service裡的乙個模組,主要用於配置路由訪問資訊

在路由訪問資訊配置中關聯到反向**、負載均衡等等各項功能,所以location模組也是乙個非常重要的配置模組

基本配置

location /

location /:表示匹配訪問根目錄

root:用於指定訪問根目錄時,訪問虛擬主機的web目錄

index:在不指定訪問具體資源時,預設展示的資源檔案列表

反向**配置方式

通過反向****伺服器訪問模式,通過proxy_set配置讓客戶端訪問透明化,proxy_pass後面可以接乙個upstream(用其name指代)表示把服務請求發到upstream裡面來負載均衡。

location /

uwsgi配置

wsgi模式下的伺服器配置訪問方式

location /

upstream模組主要負責負載均衡的配置,通過預設的輪詢排程方式來分發請求到後端伺服器(相當於宣告然後由location裡面來使用)

簡單的配置方式如下

upstream name 

核心配置資訊如下

Plone ZEO 與 Nginx的配置

plone安裝時執行 install.sh zeo plone執行執行 bin plonectl start 預設有2個client,自己手動加了乙個 plone zeocluster base.cfg中新增 client3 a copy of client1,except adjusted add...

nginx的安裝與配置

1 nginx 4 nginx的安裝 linux centos7 2 安裝相關依賴和庫檔案 yum y install gcc gcc c autoconf automake gcc gcc c 的庫檔案 yum y install pcre pcre devel 安裝nginx依賴包 yum y ...

Nginx 的安裝與配置

linux centos 7.3 64位 nginx nginx 1.13.1 安裝目錄 usr local 3 openssl 若需要支援 https 協議 yum y install openssl yum y install openssl devel 1 解壓安裝包 tar z xv f n...