nginx 基本命令和檔案配置

從零學習大資料發表於2020-11-26

1、nginx 常用命令

在/usr/local/nginx/sbin 目錄下

    ./nginx -v #檢視nginx 版本
    ./nginx  #啟動命令
    ./nginx -s stop #關閉命令
    ./nginx -s reload #重新載入命令

2、nginx 配置檔案簡介

配置檔案一般為 /usr/local/nginx/conf/nginx.conf

在這裡插入圖片描述

全域性塊

從配置檔案開始到 events 塊之間的內容,主要會設定一些影響 nginx 伺服器整體執行的配置指令,主要包括配置執行 Nginx 伺服器的使用者(組)、允許生成的 worker process 數,程式 PID 存放路徑、日誌存放路徑和型別以及配置檔案的引入等。
比如上面第一行配置的 worker_processes 1;

events塊

比如上面的配置:
events {
worker_connections 1024;
}
events 塊涉及的指令主要影響 Nginx 伺服器與使用者的網路連線,常用的設定包括是否開啟對多 work process 下的網路連線進行序列化,是否允許同時接收多個網路連線,選取哪種事件驅動模型來處理連線請求,每個 word process 可以同時支援的最大連線數等。 上述例子就表示每個 work process 支援的最大連線數為 1024. 這部分的配置對 Nginx 的效能影響較大,在實際中應該靈活配置

http塊

這算是 Nginx 伺服器配置中最頻繁的部分,代理、快取和日誌定義等絕大多數功能和第三方模組的配置都在這裡。需要注意的是:http 塊也可以包括 http 全域性塊、server 塊。

在這裡插入圖片描述

①、http 全域性塊
     http 全域性塊配置的指令包括檔案引入、MIME-TYPE 定義、日誌自定義、連線超時時間、單連結請求數上限等。
②、server 塊
      這塊和虛擬主機有密切關係,虛擬主機從使用者角度看,和一臺獨立的硬體主機是完全一樣的,該技術的產生是為了節省網際網路伺服器硬體成本。
 每個 http 塊可以包括多個 server 塊,而每個 server 塊就相當於一個虛擬主機。
 而每個 server 塊也分為全域性 server 塊,以及可以同時包含多個 locaton 塊。
    1、全域性 server 塊
 最常見的配置是本虛擬機器主機的監聽配置和本虛擬主機的名稱或 IP 配置。
    2、location 塊
 一個 server 塊可以配置多個 location 塊。
 這塊的主要作用是基於 Nginx 伺服器接收到的請求字串(例如 server_name/uri-string),對虛擬主機名稱
(也可以是 IP 別名)之外的字串(例如 前面的 /uri-string)進行匹配,對特定的請求進行處理。地址定向、資料快取和應答控制等功能,還有許多第三方模組的配置也在這裡進行

3、nginx 配置

1、反向代理配置

案例一:
使用 nginx 反向代理,訪問 www.123.com 直接跳轉到 127.0.0.1:8080
首先在hosts 檔案下面配置 www.123.com的域名對映
後面修改conf配置檔案

在這裡插入圖片描述

案例二:
使用 nginx 反向代理,根據訪問的路徑跳轉到不同埠的服務中
nginx 監聽埠為 9001,
訪問 http://127.0.0.1:9001/edu/ 直接跳轉到 127.0.0.1:8081
訪問 http://127.0.0.1:9001/vod/ 直接跳轉到 127.0.0.1:8082

在這裡插入圖片描述

location 指令說明
該指令用於匹配 URL。
 語法如下:
   location =[ = | ~ | ~* | ^~] uri {
   }
 1、= :用於不含正規表示式的 uri 前,要求請求字串與 uri 嚴格匹配,如果匹配
成功,就停止繼續向下搜尋並立即處理該請求。
 2、~:用於表示 uri 包含正規表示式,並且區分大小寫。
 3、~*:用於表示 uri 包含正規表示式,並且不區分大小寫。
 4、^~:用於不含正規表示式的 uri 前,要求 Nginx 伺服器找到標識 uri 和請求字
符串匹配度最高的 location 後,立即使用此 location 處理請求,而不再使用 location 
塊中的正則 uri 和請求字串做匹配。
 注意:如果 uri 包含正規表示式,則必須要有 ~ 或者 ~* 標識。

2、負載均衡

瀏覽器位址列輸入地址 http://192.168.17.129/edu/a.html,負載均衡效果,平均 8080
和 8081 埠中
(1)準備兩臺 tomcat 伺服器,一臺 8080,一臺 8081
(2)在兩臺 tomcat 裡面 webapps 目錄中,建立名稱是 edu 資料夾,在 edu 資料夾中建立
頁面 a.html,用於測試
(3)、在 nginx 的配置檔案中進行負載均衡的配置

在這裡插入圖片描述
在這裡插入圖片描述

nginx 提供了幾種負載均衡策略:1、輪詢(預設)2、weight 3、ip_hash 4、fair(第三方)

1、輪詢(預設)
每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器 down 掉,能自動剔除。
2、weight
weight 代表權,重預設為 1,權重越高被分配的客戶端越多
指定輪詢機率,weight 和訪問比率成正比,用於後端伺服器效能不均的情況。 例如:
upstream server_pool{
    server 192.168.5.21 weight=10;
    server 192.168.5.22 weight=10;
}
3、ip_hash
每個請求按訪問 ip 的 hash 結果分配,這樣每個訪客固定訪問一個後端伺服器,可以解決 session 的問題。 例如:
upstream server_pool{ 
  ip_hash; 
  server 192.168.5.21:80; 
  server 192.168.5.22:80; 
}
4、fair(第三方)
按後端伺服器的響應時間來分配請求,響應時間短的優先分配。
upstream server_pool{ 
   server 192.168.5.21:80; 
   server 192.168.5.22:80; 
   fair; 
}
3、動靜分離

先在伺服器根目錄新建資料夾
/data/www/
/data/image/

在這裡插入圖片描述

4、nginx 優化策略
需要設定多少個 worker

Nginx 同 redis 類似都採用了 io 多路複用機制,每個 worker 都是一個獨立的程式,但每個進
程裡只有一個主執行緒,通過非同步非阻塞的方式來處理請求, 即使是千上萬個請求也不在話
下。每個 worker 的執行緒可以把一個 cpu 的效能發揮到極致。所以 worker 數和伺服器的 cpu
數相等是最為適宜的。設少了會浪費 cpu,設多了會造成 cpu 頻繁切換上下文帶來的損耗。

設定 worker 數量。

worker_processes 4
#work 繫結 cpu(4 work 繫結 4cpu)。
worker_cpu_affinity 0001 0010 0100 1000
#work 繫結 cpu (4 work 繫結 8cpu 中的 4 個) 。
worker_cpu_affinity 0000001 00000010 00000100 00001000

連線數 worker_connection

這個值是表示每個 worker 程式所能建立連線的最大值,所以,一個 nginx 能建立的最大連線
數,應該是 worker_connections * worker_processes。當然,這裡說的是最大連線數,對於
HTTP 請 求 本 地 資 源 來 說 , 能 夠 支 持 的 最 大 並 發 數 量 是 worker_connections * worker_processes,如果是支援 http1.1 的瀏覽器每次訪問要佔兩個連線,所以普通的靜態訪問最大併發數是: worker_connections * worker_processes /2,而如果是 HTTP 作 為反向代理來說,最大併發數量應該是 worker_connections * worker_processes/4。因為作為反向代理伺服器,每個併發會建立與客戶端的連線和與後端服務的連線,會佔用兩個連線。

相關文章