Nginx的作用 配置檔案詳細注釋 學習筆記

2021-09-25 04:01:18 字數 4453 閱讀 8121

現在很多公司都會用到nginx,那麼你有沒有想過,到底什麼是nginx呢?nginx到底有什麼作用呢?為什麼我們要用它呢?

nginx是一款高效能、輕量級web伺服器/反向**伺服器及電子郵件(imap/pop3)**伺服器。

其特點是占有記憶體少,併發能力強

1.反向**

反向**是**伺服器的一種。伺服器根據客戶端的請求,從其關聯的一組或多組後端伺服器(如web伺服器)上獲取資源,然後再將這些資源返回給客戶端,客戶端只會得知反向**的ip位址,而不知道在**伺服器後面的伺服器集群的存在。

2.動態與靜態分離

nginx可以將請求分開,因此可以利用這點將動態請求與靜態請求分離開來。這樣把靜態資源部署在nginx伺服器上,把後端**部署在tomcat等容器上,這樣就可以實現動態與靜態分離。

3.負載均衡

因為nginx具有反向**的能力,因此nginx可以將資料流量按照一定規則分攤到多個伺服器執行,從而減輕每台伺服器的壓力,多台伺服器(集群形式)共同完成工作任務,從而提高了資料的吞吐量。

nginx的負載均衡策略:引數

說明不寫任何引數

預設輪詢

weight

權重ip_hash

依據ip分配

least_conn

最少連線

url_hash(第三方)

依據url分配

air(第三方)

響應時間

負載均衡節點有如下可選引數:引數

說明fail_timeout

max_fails結合使用(預設為10s

max_fails

fail_timeout引數設定的時間內如果失敗次數達到max_failsnginx就認為伺服器不可用 (預設為1)

backup

標記該伺服器為備用伺服器。當主伺服器停止時,請求會被傳送到這裡

down

標記伺服器永久停機了

nginx基於連線探測,max_fails設定nginx與伺服器節點通訊的嘗試失敗次數。在fail_timeout引數定義的時間段內,失敗的次數達到max_fails設定的值,nginx就認為該伺服器節點不可用,將請求根據策略轉到其他可用伺服器節點上去。在下乙個fail_timeout時間週期內,該伺服器節點不會再被嘗試,等到下下個fail_timeout時間週期才會被嘗試。注意這裡fail_timeout有雙重意義。

max_fails失敗的嘗試次數預設是1設為0就會停止統計嘗試次數,認為伺服器是一直可用的。可以通過指令proxy_next_upstreamfastcgi_next_upstreammemcached_next_upstream來配置什麼是失敗的嘗試。預設配置時,http_404狀態不被認為是失敗的嘗試

3.1).輪詢(預設

它是upstream模組預設的負載均衡策略。每個請求會按時間順序逐一分配到不同的後端伺服器。

例子:

upstream lixiang.test
注意:

3.2).權重(weight

在輪詢策略的基礎上通過weight引數指定輪詢的比重。其中weight的預設值為1,且weight值越大,則被分配比重越大即被分配機率越大。

例子:

upstream lixiang.test
注意:

3.3).根據ip分配(ip_hash

nginx將根據客戶端ip的hash結果分配。相同的ip在一定時間內會被被分配到固定的伺服器節點上去,這樣就可以解決session共享問題。

例子:

upstream lixiang.test
注意:

3.4).最少連線(least_conn

nginx把請求**給連線數較少的後端伺服器。

輪詢演算法是把請求平均的**給各個後端,使它們的負載大致相同。但是,有些請求占用的時間很長,會導致其所在的伺服器節點負載較高。這種情況下,least_conn這種方式就可以達到更好的負載均衡效果。

例子:

upstream lixiang.test
注意:

3.5).第三方

第三方的負載均衡策略的實現需要安裝第三方外掛程式。

3.5.1).fair

按照伺服器端的響應時間來分配請求,響應時間短的優先分配。

例子:

upstream lixiang.test
3.5.2).url_hash

例子:

upstream lixiang.test
上面介紹完了nginx相關資訊想必已經對nginx有了一定的了解,接下來介紹nginx最重要的配置檔案nginx.conf。對其配置檔案內容進行詳細注釋,便於我們使用和理解。

user www-data; #執行使用者

worker_processes 2; #工作的子程序數量(通常等於cpu數量或者2倍於cpu)

error_log /var/log/nginx/error.log; #錯誤日誌存放路徑

pid /var/run/nginx.pid; #pid檔案存放路徑

worker_rlimit_nofile 65535; # 用於繫結worker程序和cpu, linux核心2.4以上可用

#工作模式及連線數上限

events

#設定http伺服器,利用它的反向**功能提供負載均衡支援

#主機設定

server

#訪問 /lixiang/test2 會被路由到 lixiang.test2 配置的伺服器上去

location /lixiang/test2

#預設請求

location /

#允許(allow)或禁止(deny)某個ip或ip段訪問,依次從上往下匹配規則,如果滿足就停止往下匹配

location /nginx-status

# 定義錯誤提示頁面

error_page 500 502 503 504 404 /50x.html;

location = /50x.html

#下面四個是對靜態資源快取時間的配置。

#我們全關閉了,因為我們是前後端分離的,我們需要保證前端部署後可以立即生效。

#如果你們需要對靜態資源進行快取,可以根據需要自行開啟

#快取 .html檔案30d

#location ~ \.(html)$

#快取各種檔案24h

#快取 .js 和 .css 檔案2h

#location ~ .*\.(js|css)$

#靜態檔案,nginx自己處理

#location ~ ^/(flash|media|static)/

#禁止訪問 .ht*** 檔案

location ~ /\.ht

#禁止訪問 web-inf 目錄

location ~ ^/(web-inf)/

}}

nginx詳細配置檔案

快取時間設定 js和css快取時間設定 location js css 日誌格式設定 定義本虛擬主機的訪問日誌 access log var log nginx ha97access.log access 對 啟用反向 location 設定檢視nginx狀態的位址 location nginxst...

nginx配置檔案作用介紹

1 nginx配置檔案nginx.conf中文詳解 23 定義nginx執行的使用者和使用者組 4user www www 56 nginx程序數,建議設定為等於cpu總核心數。7 worker processes 8 8 9 全域性錯誤日誌定義型別,debug info notice warn e...

nginx配置檔案的詳細介紹

為什麼一直著重研究nginx呢?是因為它是一款很強大的伺服器,如果會lua這種外掛程式語言的話,配合與之使用將會是未來幾年的新的流行技術,因為太輕了,能力太強大了,到現在可以大概看出,實際伺服器之間的架構就是配置檔案的鏈結,修改,新增等關係。下面就介紹一下nginx的配置解析 nginx 的配置主要...