現在很多公司都會用到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_fails
,nginx
就認為伺服器不可用 (預設為1
)
backup
標記該伺服器為備用伺服器。當主伺服器停止時,請求會被傳送到這裡
down
標記伺服器永久停機了
nginx
基於連線探測,max_fails
設定nginx
與伺服器節點通訊的嘗試失敗次數。在fail_timeout
引數定義的時間段內,失敗的次數達到max_fails
設定的值,nginx
就認為該伺服器節點不可用,將請求根據策略轉到其他可用伺服器節點上去。在下乙個fail_timeout
時間週期內,該伺服器節點不會再被嘗試,等到下下個fail_timeout
時間週期才會被嘗試。注意這裡fail_timeout
有雙重意義。
max_fails
失敗的嘗試次數預設是1。設為0就會停止統計嘗試次數,認為伺服器是一直可用的。可以通過指令proxy_next_upstream
、fastcgi_next_upstream
和memcached_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 的配置主要...