最近感覺很多東西在運用到一定的程度之後,會發現原來是自己了解到的不夠。一方面限於實際運用到的不多,一方面可能是因為一開始沒有進行全面認識。遂這裡蒐集整理了一番nginx。
centos平台,原始碼安裝的mac平台,使用brew安裝的/usr/local/nginx/nginx # 啟動
/usr/local/nginx/nginx -s reload # 平滑重啟
/usr/local/nginx/nginx.conf # 配置檔案
/usr/local/bin/nginx # 啟動其實,對比,apache 的配置檔案,它的相對比較清晰和簡單,之前覺得很難,現在沉下心來想想,其實很簡單。大致的分塊下,基本就分為以下幾塊:/usr/local/bin/nginx -s reload # 平滑重啟
/usr/local/etc/nginx/nginx.cnf # 配置檔案
mainserver 標誌定義虛擬主機開始。events 下面定義的區分開來
index index.php index.html index.htm;
# index 全域性定義訪問的預設首頁位址。注意要和 locate {} 下面定義的區分開來
charset utf-8; # 設定網頁的預設編碼格式
access_log usr/local/var/log/host.access.log main;
# access_log 指定此虛擬主機的訪問日誌存放路徑,最後的 main 用於指定訪問日誌的輸出格式
error_log usr/local/var/log/host.error.log error;
listen 用於指定虛擬主機的服務埠。
server_name 用來指定ip位址或者網域名稱,多個網域名稱之間用空格分開。
root 表示在這整個 server 虛擬主機內,全部的 root web 根目錄。注意要和 locate {} 下面定義的區分開來。
index 全域性定義訪問的預設首頁位址。注意要和 locate {} 下面定義的區分開來。
charset 用於設定網頁的預設編碼格式。
access_log 用來指定此虛擬主機的訪問日誌存放路徑,最後的 main 用於指定訪問日誌的輸出格式。
2.5 location 模組
location 根據它字面意思就知道是來定位的,定位 url,解析 url,所以,它也提供了強大的正則匹配功能,也支援條件判斷匹配,使用者可以通過 location 指令實現 nginx 對動、靜態網頁進行過濾處理。像我們的 php 環境搭建就是用到了它。
我們先來看這個,設定預設首頁和虛擬機器目錄。
location / { # 表示匹配訪問根目錄location / 表示匹配訪問根目錄。root /users/yangyi/www; # 指定訪問根目錄時,虛擬主機的 web 目錄
index index.php index.html index.htm; # 設定我們只輸入網域名稱後訪問的預設首頁位址
root 指令用於指定訪問根目錄時,虛擬主機的web目錄,這個目錄可以是相對路徑(相對路徑是相對於nginx的安裝目錄)。也可以是絕對路徑。
index 用於設定我們只輸入網域名稱後訪問的預設首頁位址,有個先後順序:index.php index.html index.htm,如果沒有開啟目錄瀏覽許可權,又找不到這些預設首頁,就會報403錯誤。
location 還有一種方式就是正則匹配,開啟正則匹配這樣:location ~。後面加個~。
location ~ .php$ {.php$ 熟悉正則的我們直到,這是匹配 .php 結尾的 url,用來解析 php 檔案。裡面的 root 也是一樣,用來表示虛擬主機的根目錄。root /users/yangyi/www;
fastcgi_index index.php;
include fastcgi.conf;
2.6 upstream 模組
upstream 模組負責負載均衡模組,通過乙個簡單的排程演算法來實現客戶端 ip 到後端伺服器的負載均衡
upstream iyangyi.com{在上面的例子中,通過 upstream 指令指定了乙個負載均衡器的名稱 iyangyi.com。這個名稱可以任意指定,在後面需要的地方直接呼叫即可。ip_hash;
server 192.168.12.1:80;
server 192.168.12.2:80 down;
server 192.168.12.3:8080 max_fails=3 fail_timeout=20s;
server 192.168.12.4:8080;
裡面是 ip_hash 這是其中的一種負載均衡排程演算法,下面會著重介紹。緊接著就是各種伺服器了。用 server 關鍵字表識,後面接 ip。
nginx 的負載均衡模組目前支援 4 種排程演算法 :
1)weight 輪詢(預設)
每個請求按時間順序逐一分配到不同的後端伺服器,如果後端某台伺服器宕機,故障系統被自動剔除,使使用者訪問不受影響。weight。指定輪詢權值,weight值越大,分配到的訪問機率越高,主要用於後端每個伺服器效能不均的情況下。
2)ip_hash
每個請求按訪問ip的hash結果分配,這樣來自同乙個ip的訪客固定訪問乙個後端伺服器,有效解決了動態網頁存在的session共享問題。
3)fair
4)url_hash
按訪問url的hash結果來分配請求,使每個url定向到同乙個後端伺服器,可以進一步提高後端快取伺服器的效率。nginx本身是不支援url_hash的,如果需要使用這種排程演算法,必須安裝nginx 的hash軟體包。
down,表示當前的server暫時不參與負載均衡。
backup,預留的備份機器。當其他所有的非backup機器出現故障或者忙的時候,才會請求backup機器,因此這台機器的壓力最輕。
max_fails,允許請求失敗的次數,預設為1。當超過最大次數時,返回proxy_next_upstream 模組定義的錯誤。
fail_timeout,在經歷了max_fails次失敗後,暫停服務的時間。max_fails可以和fail_timeout一起使用。
注意 當負載排程演算法為ip_hash時,後端伺服器在負載均衡排程中的狀態不能是weight和backup。
**:
架構師日記 Nginx的配置優化
優化的方向和目標,無外乎 1.盡量提高單台機器處理效率 2.盡量降低單台機器的負載 3.盡量降低磁碟的i o 4.盡量降低網路i o 5.儘量減少記憶體使用 6.盡量高效利用cpu 生產環境下,應該使nginx模組最小化,就是用到哪幾個就開哪幾個,這個需要在編譯安裝nginx的時候做 使用者和組,最...
架構師日記 Nginx的HTTP模組配置
core module支援一些內建的變數,與apache使用的變數相一致。首先,一些變數代表了客戶端請求頭部的一些字段,如 http user agent,http cookie等等。注意,由於這些變數會在請求中定義,所以可能無法保證他們是存在的或者說可以定義到一些別的地方 例如遵循一定的規範 除此...
聊聊架構及架構師
b 1.架構分類 b 關於架構,大體可以分為以下三類 1.1 it架構 基於硬體 網路等構建整體的it運維架構體系,包括idc機房 網路拓撲 安全 負載均衡 運維監控等 1.2 基礎架構 1.3 應用架構 偏重於業務功能的實現,在基於使用者需求實現業務功能 提公升使用者體驗的基礎上,保證系統的效能 ...