#nginx進(jìn)程數(shù),建議設(shè)置為等于CPU總核心數(shù)。
worker_processes 1;
# 事件區(qū)塊開始
events {
#單個(gè)進(jìn)程最大連接數(shù)(最大連接數(shù)=連接數(shù)*進(jìn)程數(shù))
#根據(jù)硬件調(diào)整,和前面工作進(jìn)程配合起來用,盡量大,但是別把cpu跑到100%就行。每個(gè)進(jìn)程允許的最多連接數(shù),理論上每臺(tái)nginx服務(wù)器的最大連接數(shù)為。
worker_connections 1024;
}
#設(shè)定http服務(wù)器,利用它的反向代理功能提供負(fù)載均衡支持
http {
#include:導(dǎo)入外部文件mime.types,將所有types提取為文件,然后導(dǎo)入到nginx配置文件中
include mime.types;
#默認(rèn)文件類型
default_type application/octet-stream;
#開啟高效文件傳輸模式,sendfile指令指定nginx是否調(diào)用sendfile函數(shù)來輸出文件,對于普通應(yīng)用設(shè)為 on,如果用來進(jìn)行下載等應(yīng)用磁盤IO重負(fù)載應(yīng)用,可設(shè)置為off,以平衡磁盤與網(wǎng)絡(luò)I/O處理速度,降低系統(tǒng)的負(fù)載。注意:如果圖片顯示不正常把這個(gè)改成off。
#sendfile指令指定 nginx 是否調(diào)用sendfile 函數(shù)(zero copy 方式)來輸出文件,對于普通應(yīng)用,必須設(shè)為on。如果用來進(jìn)行下載等應(yīng)用磁盤IO重負(fù)載應(yīng)用,可設(shè)置為off,以平衡磁盤與網(wǎng)絡(luò)IO處理速度,降低系統(tǒng)uptime。
sendfile on;
#長連接超時(shí)時(shí)間,單位是秒
keepalive_timeout 65;
# 第一個(gè)Server區(qū)塊開始,表示一個(gè)獨(dú)立的虛擬主機(jī)站點(diǎn)
server {
# 提供服務(wù)的端口,默認(rèn)80
listen 80;
# 提供服務(wù)的域名主機(jī)名
server_name localhost;
#對 "/" 啟用反向代理,第一個(gè)location區(qū)塊開始
location / {
root html; #服務(wù)默認(rèn)啟動(dòng)目錄
index index.html index.htm; # 默認(rèn)的首頁文件,多個(gè)用空格分開
}
# 反向代理"/test/",
location /test/ {
# 以/test/請求開頭的接口,那么就去訪問這個(gè)ip地址( http://localhost:8080/)的后臺(tái)端口
proxy_pass http://localhost:8080/;
}
# 錯(cuò)誤頁面路由
error_page 500 502 503 504 /50x.html; # 出現(xiàn)對應(yīng)的http狀態(tài)碼時(shí),使用50x.html回應(yīng)客戶
location = /50x.html { # location區(qū)塊開始,訪問50x.html
root html; # 指定對應(yīng)的站點(diǎn)目錄為html
}
}
}
基本原理理解
主要分為三個(gè)模塊:全局塊、events塊、http塊
- 全局塊
- 運(yùn)行 Nginx 服務(wù)器的用戶(組)
- 允許生成的 worker process 數(shù)
- 進(jìn)程 PID 存放路徑
- 日志存放路徑
- 配置文件的引入
worker_processes: nginx進(jìn)程數(shù),建議設(shè)置為等于CPU總核心數(shù)。
- events塊
- 是否開啟對多 work process 下的網(wǎng)絡(luò)連接進(jìn)行序列化
- 是否允許同時(shí)接收多個(gè)網(wǎng)絡(luò)連接
- 選取哪種事件驅(qū)動(dòng)模型來處理連接請求
- 每個(gè) word process 可以同時(shí)支持的最大連接數(shù)
worker_connections: 表示每個(gè) work process 支持的最大連接數(shù)為 1024.
- http塊
- http全局塊:
http全局塊配置的指令包括文件引入、MIME-TYPE 定義、日志自定義、連接超時(shí)時(shí)間、單鏈接請求數(shù)上限等。 - server 塊:
這塊和虛擬主機(jī)有密切關(guān)系,虛擬主機(jī)從用戶角度看,和一臺(tái)獨(dú)立的硬件主機(jī)是完全一樣的,該技術(shù)的產(chǎn)生是為了 節(jié)省互聯(lián)網(wǎng)服務(wù)器硬件成本。每個(gè) http 塊可以包括多個(gè) server 塊,而每個(gè) server 塊就相當(dāng)于一個(gè)虛擬主機(jī)。而每個(gè) server 塊也分為全局 server 塊,以及可以同時(shí)包含多個(gè) locaton 塊。 - 全局 server 塊:
最常見的配置是本虛擬機(jī)主機(jī)的監(jiān)聽配置和本虛擬主機(jī)的名稱或IP配置。 - location 塊:
一個(gè) server 塊可以配置多個(gè) location 塊。這塊的主要作用是基于 Nginx 服務(wù)器接收到的請求字符串(例如 server_name/uri-string),對虛擬主機(jī)名稱 (也可以是IP 別名)之外的字符串(例如 前面的 /uri-string)進(jìn)行匹配,對特定的請求進(jìn)行處理。 地址定向、數(shù)據(jù)緩 存和應(yīng)答控制等功能,還有許多第三方模塊的配置也在這里進(jìn)行。
- http全局塊: