nginx(發音同engine x)是乙個非同步框架的 web伺服器,也可以用作反向**,負載平衡器 和 http快取。
1.配置檔案結構
... #全域性塊
events
http #http塊
location [pattern]
} server
... #http全域性塊
}
2.結構詳解
全域性塊
:配置影響nginx全域性的指令。一般有執行nginx伺服器的使用者組,nginx程序pid存放路徑,日誌存放路徑,配置檔案引入,允許生成worker process數等。
events塊
:配置影響nginx伺服器或與使用者的網路連線。有每個程序的最大連線數,選取哪種事件驅動模型處理連線請求,是否允許同時接受多個網路連線,開啟多個網路連線序列化等。
http塊
:可以巢狀多個server,配置**,快取,日誌定義等絕大多數功能和第三方模組的配置。如檔案引入,mime-type定義,日誌自定義,是否使用sendfile傳輸檔案,連線超時時間,單連線請求數等。
server塊
:配置虛擬主機的相關引數,乙個http中可以有多個server。
location塊
:配置請求的路由,以及各種頁面的處理情況。
nginx主要功能:1、**服務 2、負載均衡 3、靜態資源(動靜分離) 4、快取服務
1.**服務
proxy_pass url;
url包含傳輸協議、主機名稱或者ip位址加埠號等要素。
傳輸協議通常是"http"或者"https"
注意upstream和proxy_pass搭配使用的兩種情況(1
)proxy_list中指明了傳輸協議
upstream proxy_list
server}(
2)proxy_list中沒傳輸協議
upstream proxy_list
server
}
還有需要注意url中是否包含uri,以訪問""為例
server
}
其他指令:
location /
2.負載均衡
**伺服器組的配置:
upstream proxy_list
server
負載均衡策略主要有以下四種:
upstream proxy_list
輪詢:nginx預設就是輪詢其權重都預設為1,伺服器處理請求的順序:ababababab…
upstream proxy_list
加權輪詢:跟據配置的權重的大小而分發給不同伺服器不同數量的請求。如果不設定,則預設為1。下面伺服器的請求順序為:abbabbabbabbabb…
upstream proxy_list
ip_hash:nginx會讓相同的客戶端ip請求相同的伺服器。
upstream proxy_list
關於nginx負載均衡配置的幾個狀態引數講解。
upstream mysvr
3.靜態資源(動靜分離)
為了提高**的響應速度,減輕程式伺服器(tomcat,jboss等)的負載,對於靜態資源比如,js,css等檔案,我們可以在反向**伺服器中進行快取,這樣瀏覽器在請求乙個靜態資源時,**伺服器就可以直接處理,而不用將請求**給後端伺服器。使用者請求的動態檔案比如servlet,jsp則**給tomcat,jboss伺服器處理,這就是動靜分離。這也是反向**伺服器的乙個重要的作用。
靜態檔案的請求比如:gif、jpg、js、css等靜態資源請求,由nginx進行處理,配置如下:
expires 30d; 指定這些資源檔案在客戶端瀏覽器的快取時間。30d指的是30天,1h指的是1小時。
4.快取服務
完整的配置:
#vim /usr/local/nginx/conf/nginx.conf
upstream node
proxy_cache_path /cache levels=1:2 keys_zone=cache:10m max_size=10g inactive=60m use_temp_path=off;
server
location /
}
引數詳解:
proxy_cache_path /soft/cache levels=1:2 keys_zone=cache:10m max_size=10g inactive=60m use_temp_path=off;
#proxy_cache //存放快取臨時檔案
#levels //按照兩層目錄分級
#keys_zone //開闢空間名,10m:開闢空間大小,1m可存放8000key
#max_size //控制最大大小,超過後nginx會啟用淘汰規則
#inactive //60分鐘沒有被訪問快取會被清理
#use_temp_path //臨時檔案,會影響效能,建議關閉
proxy_cache cache;
#proxy_cache //開啟快取
#proxy_cache_valid //狀態碼200|304的過期為12h,其餘狀態碼10分鐘過期
#proxy_cache_key //快取key
#add_header //增加頭資訊,觀察客戶端respoce是否命中
#proxy_next_upstream //出現502-504或錯誤,會跳過此台伺服器訪問下一台伺服器
部分頁面不加快取,通過以下配置實現。
if
($request_uri ~ ^/(static|login|register|password))
清理快取:
1.rm刪除已快取的資料
rm -rf /cache/*
2.通過ngx_cache_purge擴充套件模組清理,需要編譯安裝nginx
user nobody;
#配置使用者或者組,預設為nobody nobody。
worker_processes 2;
#允許生成的程序數,預設為1
#pid /nginx/pid/nginx.pid; #指定nginx程序執行檔案存放位址
#error_log log/error.log debug; #制定日誌路徑,級別。這個設定可以放入全域性塊,http塊,server塊,級別以此為:debug|info|notice|warn|error|crit|alert|emerg
#靜態檔案交給nginx處理
#靜態檔案交給nginx處理
location ~ .*\.(js|css)?$
error_page 500 502 503 504 /50x.html;
location = /50x.html
}}
nginx安裝及基本配置
nginx安裝 示例環境 centos,軟體目錄src 1.nginx 依賴安裝 pcre 8.37.tar.gz openssl 1.0.1t.tar.gz zlib 1.2.8.tar.gz nginx 1.11.1.tar.gz wget 1 安裝pcre依賴包。安裝包放入linux 系統中 ...
nginx基本配置命令及方法
下面拿vmware workstation 虛擬機器為實驗環境給大家做一下 1 yum y install pcre devel zlib devel.x86 64 安裝支援軟體 2 useradd m s sbin nologin nginx 建立執行nginx的使用者和組 3 編譯安裝nginx...
Nginx基本配置
基本的 優化過的 配置 我們將修改的唯一檔案是nginx.conf,其中包含nginx不同模組的所有設定。你應該能夠在伺服器的 etc nginx目錄中找到nginx.conf。首先,我們將談論一些全域性設定,然後按檔案中的模組挨個來,談一下哪些設定能夠讓你在大量客戶端訪問時擁有良好的效能,為什麼它...