#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)程配合起來(lái)用,盡量大筒饰,但是別把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ù)來(lái)輸出文件,對(duì)于普通應(yīng)用設(shè)為 on攒钳,如果用來(lái)進(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 方式)來(lái)輸出文件燎孟,對(duì)于普通應(yīng)用禽作,必須設(shè)為on。如果用來(lái)進(jìn)行下載等應(yīng)用磁盤IO重負(fù)載應(yīng)用揩页,可設(shè)置為off旷偿,以平衡磁盤與網(wǎng)絡(luò)IO處理速度,降低系統(tǒng)uptime爆侣。
sendfile on;
#長(zhǎng)連接超時(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;
#對(duì) "/" 啟用反向代理,第一個(gè)location區(qū)塊開始
location / {
root html; #服務(wù)默認(rèn)啟動(dòng)目錄
index index.html index.htm; # 默認(rèn)的首頁(yè)文件茫负,多個(gè)用空格分開
}
# 反向代理"/test/",
location /test/ {
# 以/test/請(qǐng)求開頭的接口,那么就去訪問(wèn)這個(gè)ip地址( http://localhost:8080/)的后臺(tái)端口
proxy_pass http://localhost:8080/;
}
# 錯(cuò)誤頁(yè)面路由
error_page 500 502 503 504 /50x.html; # 出現(xiàn)對(duì)應(yīng)的http狀態(tài)碼時(shí)乎赴,使用50x.html回應(yīng)客戶
location = /50x.html { # location區(qū)塊開始忍法,訪問(wèn)50x.html
root html; # 指定對(duì)應(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塊
- 是否開啟對(duì)多 work process 下的網(wǎng)絡(luò)連接進(jìn)行序列化
- 是否允許同時(shí)接收多個(gè)網(wǎng)絡(luò)連接
- 選取哪種事件驅(qū)動(dòng)模型來(lái)處理連接請(qǐng)求
- 每個(gè) word process 可以同時(shí)支持的最大連接數(shù)
worker_connections: 表示每個(gè) work process 支持的最大連接數(shù)為 1024.
- http塊
- http全局塊:
http全局塊配置的指令包括文件引入羹蚣、MIME-TYPE 定義原探、日志自定義、連接超時(shí)時(shí)間顽素、單鏈接請(qǐng)求數(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ù)器接收到的請(qǐng)求字符串(例如 server_name/uri-string)丈冬,對(duì)虛擬主機(jī)名稱 (也可以是IP 別名)之外的字符串(例如 前面的 /uri-string)進(jìn)行匹配嘱函,對(duì)特定的請(qǐng)求進(jìn)行處理。 地址定向埂蕊、數(shù)據(jù)緩 存和應(yīng)答控制等功能往弓,還有許多第三方模塊的配置也在這里進(jìn)行疏唾。
- http全局塊: