1.查找安裝路徑
whereis nginx
2.檢查配置檔案nginx.conf 是否正确
./nginx –t
3.啟動、停止nginx
cd /usr/local/nginx/sbin/
./nginx
./nginx -s stop
./nginx -s quit
./nginx -s reload
./nginx -s quit # 此方式停止步驟是待nginx程序處理任務完畢進行停止。
./nginx -s stop # 此方式相當于先查出nginx程序id再使用kill指令強制殺掉程序。
4.查詢nginx程序:
ps aux|grep nginx
5.重新加載配置檔案
6.配置nginx.conf
#======================以下是全局配置項
#指定運作 Nginx 的使用者和使用者組 ,
#預設情況下該選項關閉(關閉的情況下使用的使用者就是 nobody)
#user nobody nobody ;
#表示作業系統啟動多少個工作程序運作 Nginx
worker processes 1 ;
#Nginx 運作錯誤的日志存放位置。當然你還可以指定錯誤級别
#error log logs/error.log ;
#error_log logs/error.log notice ;
#error_log logs/error.log info ;
#指定主程序 id 檔案的存放位置,雖然 worker processes != 1 的情況下, 會有很多程序 , 管理程序卻隻有一個
#pid logs/nginx.pid;
events {
#指單個工作程序可以允許同時建立外部連接配接的數量, 無論這個連接配接是 Nginx 外部建立的,還是 Nginx 内部建立的
worker connections 1024 ;
#連接配接使用的網絡工/ 0 模型,
#可以采用[ kqueue rtsig epoll select poll eventport ]
use epoll ;
}
http {
#===============以下是 Nginx 後端服務配置項
upstream backendserverl {
#Nginx 向後端伺服器配置設定請求任務 的方式 , 預設為輪詢,如果指定了ip hash ,就是 Hash 算法
#ip hash
#後端伺服器 ip : port , 如果有多個服務節點 , 這裡就配置多個
server 192.168.220.131:8080 ;
server 192.168.220.132:8080 ;
#backup 表示,這是一個備份節點 , 隻有當所有節點失效後
#Nginx 才會往這個節點配置設定請求任務
#server 192.168.220.133:8080 backup ;
#weight , 固定權重 , 還記得我們上文提到 的權重輪詢方式吧
#server 192.168.220.134:8080 weight=100;
}
# =========================以下是 HTTP 協定主配置
#安裝 Nginx 後,在 conf 目錄下除了 nginx.conf 主配置檔案,還有很多模闆配置檔案 ,
#這裡就是導入這些模闆檔案
include mime .types ;
#HTTP 核心子產品指令,這裡設定預設類型為二進制流,也就是當檔案類型未定義時使用這種方式
default_type application/octet-stream;
#日志格式
#log_format main '$remote_addr - $remote_user [$time_local] "$request" ’ '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
#日志檔案存放的位置
#access log logs/access.log main ;
#sendfile 規則開啟
sendfile on ·
#指定一個連接配接的等待時間(機關秒),如果超過等待時間,則連接配接就會斷掉 。注意一定要設定,否則高并發情況下會産生性能問題
keepalive_timeout 65 ;
#開啟資料壓縮,後文詳細介紹
gzip on;
#==========================以下是一個服務執行個體的配置
server {
#這個代理執行個體的監聽端口
listen 80 ;
#server_name 取個唯一的執行個體名都要想半天?
server_name localhost ;
#編碼格式
charset utf-8 ;
#access log logs/host.access.log main;
#location 将按照規則分流滿足條件的 URL o
#” location /”你可以了解為“預設分流位置” 。
location / {
#root 目錄,這個 html 表示 Nginx 主安裝目錄下的“ html ”目錄 。
root html ;
#目錄中的預設展示頁面
index index.html index.htm;
#location 支援正規表達式, “~” 表示比對正規表達式
location ~ ^/business/ {
#方向代理。後文詳細講解
proxy_pass http://backendserverl;
#redirect server error pages to the static page / 50x.html
#errorpage 404 /404 . html;
error_page 500 502 503 504 /50x.html ;
location = /50x.html {
root html;
}
}
7.常用子產品
1)gzip 壓縮子產品
#開啟 gzip 壓縮服務
gzip on ;
#gzip 壓縮需要申請|臨時記憶體空間,假設前提是壓縮後大小是小子等于壓縮前的。例如,如果原始檔案大小為 10KB ,那麼它超過了 8KB,是以配置設定的記憶體是 8 × 2 = 16KB;再例如,原始檔案大小為 18KB,很明顯 16KB 也是不夠的,那麼按照 8x2x2 = 32KB 的大小申請記憶體。如果沒有設定,則預設值是申請跟原始資料相同大小的記憶體空間去存儲 gzip 壓縮結果
gzip_buffers 2 8K ;
#進行壓縮的原始檔案的最小值,也就是說如果原始檔案小子 SKB,那麼就不會進行壓縮了
gzip_min_length 5K;
#gzip 壓縮基子的 HTTP 協定版本,預設就是 HTTP 1.1
gzip_http_version 1.1;
# gzip 壓縮級别 l~ 9 ,級别越高壓縮率越大,壓縮時間也就越長, CPU 越高
gzip_comp_level 5;
#需要進行 gzip 壓縮的 Content-Type 的 Header 的類型。建議 JS 、 TEXT 、 css 、 XML, JSON
#格式都要進行壓縮:圖檔就沒必要了, GIF 、 JPGE 檔案已經壓縮得很好了 , 就算再壓縮,效果也不好,而且還耗費 CPU 。
gzip_types text/HTML text/plain application/x-javascript text/css application/xml;
2)rewrite 子產品
Nginx 的強大在于其對URL請求的(應用正規表達式)重寫(重定位),這就是 rewrite 功能子產品的作用 。Nginx 的 rewrite 功能子產品依賴于 PCRE Lib
~ 區分大小寫進行正規表達式比對
~* 不區分大小寫進行正規表達式比對
!~ 區分大小寫進行正規表達式不比對
!~* 不區分大小寫進行正規表達式不比對
如: location ~* \.(jpg|gif|png|ioc|jpeg)$
Nginx 中的全局變量
• $content_length:擷取 request 中 header 部分的“ Content_Length ”值 。
• $content_type : 擷取 request 中 header 部分的“ Content_type ”值。
• $request_method : 請求方式,常用的有兩種請求方式: POST 、 GET 。
• $remote addr : 發送請求的用戶端 IP 。
• $remote_port:發送請求的用戶端端口。
• $request_uri : 含有參數的完整的初始 URI 。
• $server_addr: request 到達的 server 的 IP 。
• $server_port : 請求到達的伺服器的端口号 。
rewrite 文法
rewrite regex replacement flag
flag關鍵字
• redirect:通知用戶端重定 向到 rewrtie 後面的位址 。
• permanent:通知用戶端永久重定向到 rewrtie 後面的位址 。
• last : 将rewrite 後的位址重新在 server 标簽中執行。
• break : 将rewrite 後的位址重新在目前的 location 标簽中執行 。
3)nginx upstream_check_module健康檢查子產品
4) image_filter圖檔動态縮略子產品
#不區分大小寫進行正規表達式比對
#隻要滿足以下表達式的請求路徑,則進行圖檔動态縮略閣的生成
location ~* /(.+)\.(jpg|gif|png|ioc|jpeg)_(\d+)_(\d+)$ {
#将以上正規表達式第 3 個區域設定的數值傳入變量“ w ”
set $w $3;
#将以上正規表達式第 4 個區域設定的數值傳入變量“ h”
set $h $4;
#将 rewrite 後的位址重新在目前的 location 标簽執行,以便找到原始圖檔
rewrite /(.+)\.(jpg|gif|png|ioc|jpeg)_(\d+)_(\d+)$ /$1.$2 break;
#按照寬度 w 和高度 h,将原始圖檔進行等比例縮放
image filter resize $w $h;
#設定單張原始圖檔的最大值為 lOMB
image_filter_buffer 10M;
#設定圖檔所在的根目錄
root /home/nodejs/BDK/public/upload/;