nginx 配置文件詳解

nginx配置文件結(jié)構(gòu)

1、整體配置架構(gòu)

main                            #全局設(shè)置
 |
 --Events
 |
 --HTTP
   |
   --upstream                   #負(fù)載均衡設(shè)置
   |
   --Server                     #主機(jī)設(shè)置
     |
     --location                 #URL匹配特定位置的設(shè)置
     |
     --location
     ..
   |
   --Server
   ..
   
server 繼承main,location繼承server,upstream既不會(huì)繼承其他設(shè)置也不會(huì)被繼承。
模塊指令:主模塊指令、事件模塊指令、HTTP核心模塊指令

2、全局(main)配置


user nobody nobody;     #主模塊指令,指定Nginx Worker進(jìn)程運(yùn)行用戶以及用戶組,默認(rèn)由nobody賬號(hào)運(yùn)行
worker_processes 2;     #指定了Nginx要開啟的進(jìn)程數(shù)。每個(gè)Nginx進(jìn)程平均耗費(fèi)10M~12M內(nèi)存。建議指定和CPU的數(shù)量一致即可
error_log logs/error.log notice; #錯(cuò)誤日志路徑,debug、info、notice、warn、error、crit
pid logs/nginx.pid;         #用來(lái)指定進(jìn)程pid的存儲(chǔ)文件位置
worker_rlimit_nofile 65535; #用于綁定進(jìn)程和cpu
 
events{                     #events事件指令是設(shè)定Nginx的工作模式及連接數(shù)上限
use epoll;              #工作模式,linux首選epoll。其他select、poll、kqueue、epoll、rtsig和/dev/poll
worker_connections 65536;  #定義nginx每個(gè)進(jìn)程最大連接數(shù)。
}
http{
    
}

最大客戶端連接數(shù)由worker_processes和worker_connections決定,即Max_client=worker_processes*worker_connections。
在作為反向代理時(shí),max_clients變?yōu)椋簃ax_clients = worker_processes * worker_connections/4。

linux系統(tǒng)中,進(jìn)程最大連接數(shù)受linux系統(tǒng)進(jìn)程的最大打開文件數(shù)限制。

3、http服務(wù)器配置

http{
include conf/mime.types;         #主模塊指定,實(shí)現(xiàn)對(duì)配置文件所包含的文件的設(shè)定
default_type application/octet-stream;  #設(shè)定默認(rèn)類型為二進(jìn)制流,也就是當(dāng)文件類型未定義時(shí)使用這種方式
#----nginx日志輸出格式start
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$gzip_ratio"';
log_format download '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$http_range" "$sent_http_content_range"';
#-----nginx日志輸出格式end
#---gzip模塊begin
gzip on;
gzip_min_length 1k;             #允許壓縮的頁(yè)面最小字節(jié)數(shù)
gzip_buffers 4 16k;     #表示申請(qǐng)4個(gè)單位為16K的內(nèi)存作為壓縮結(jié)果流緩存
gzip_http_version 1.1;  #用于設(shè)置識(shí)別HTTP協(xié)議版本
gzip_comp_level 2;      #用來(lái)指定GZIP壓縮比
gzip_types text/html;   #指定壓縮的類型
#----gizp模塊end
client_max_body_size 20m;   #設(shè)置允許客戶端請(qǐng)求的最大的單個(gè)文件字節(jié)數(shù)
client_header_buffer_size 32K;  #用于指定來(lái)自客戶端請(qǐng)求頭的headerbuffer大小
large_client_header_buffers 4 32k;  #指定客戶端請(qǐng)求中較大的消息頭的緩存最大數(shù)量和大小
Sendfile on;        #開啟高效文件傳輸模式
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 60;   #置客戶端連接保持活動(dòng)的超時(shí)時(shí)間
client_header_timeout 10;   #設(shè)置客戶端請(qǐng)求頭讀取超時(shí)時(shí)間
client_body_timeout 10;     #設(shè)置客戶端請(qǐng)求主體讀取超時(shí)時(shí)間
send_timeout 10;    指定響應(yīng)客戶端的超時(shí)時(shí)間。這個(gè)超時(shí)僅限于兩個(gè)連接活動(dòng)  之間的時(shí)間,如果超過這個(gè)時(shí)間,客戶端沒有任何活動(dòng),Nginx將會(huì)關(guān)閉連接。
}

4、upstream

upstream panel_gateway {
        server 172.16.2.173:27002;
        server 172.16.2.174:27002;
    }
配好location 模塊使用
  • nginx負(fù)載均衡算法
    • 輪詢(默認(rèn)):每個(gè)請(qǐng)求按時(shí)間順序逐一分配到不同的后端服務(wù)器,如果后端某臺(tái)服務(wù)器宕機(jī),故障系統(tǒng)被自動(dòng)剔除,使用戶訪問不受影響;
stream backserver {
    server 192.168.0.12;
    server 192.168.0.13;
}
  • Weight:指定輪詢權(quán)值,Weight值越大,分配到的訪問機(jī)率越高,主要用于后端每個(gè)服務(wù)器性能不均的情況下;
upstream backserver {
    server 192.168.0.12 weight=2;
    server 192.168.0.13 weight=8;
}
  • ip_hash:每個(gè)請(qǐng)求按訪問IP的hash結(jié)果分配,這樣來(lái)自同一個(gè)IP的訪客固定訪問一個(gè)后端服務(wù)器,有效解決了動(dòng)態(tài)網(wǎng)頁(yè)存在的session共享問題;
upstream backserver {
    ip_hash;
     server 192.168.0.12:88;
    server 192.168.0.13:80;
}
  • fair:比上面兩個(gè)更加智能的負(fù)載均衡算法。此種算法可以依據(jù)頁(yè)面大小和加載時(shí)間長(zhǎng)短智能地進(jìn)行負(fù)載均衡,也就是根據(jù)后端服務(wù)器的響應(yīng)時(shí)間來(lái)分配請(qǐng)求,響應(yīng)時(shí)間短的優(yōu)先分配。Nginx本身是不支持fair的,如果需要使用這種調(diào)度算法,必須下載Nginx的upstream_fair模塊;
upstream backserver {
    server server1;
    server server2;
    fair;
}
  • url_hash:按訪問url的hash結(jié)果來(lái)分配請(qǐng)求,使每個(gè)url定向到同一個(gè)后端服務(wù)器,可以進(jìn)一步提高后端緩存服務(wù)器的效率。Nginx本身是不支持url_hash的,如果需要使用這種調(diào)度算法,必須安裝Nginx 的hash軟件包。
upstream backserver {
    server squid1:3128;
    server squid2:3128;
    hash $request_uri;
    hash_method crc32;
}

5、server虛擬主機(jī)配置

server{
listen 80;          #listen用于指定虛擬主機(jī)的服務(wù)端口
server_name 192.168.8.18 cszhi.com; #用來(lái)指定IP地址或者域名,多個(gè)域                                     名之間用空格分開
index index.html index.htm index.php;   #index用于設(shè)定訪問的默認(rèn)首                                        頁(yè)地址
root /wwwroot/www.cszhi.com         #指令用于指定虛擬主機(jī)的網(wǎng)頁(yè)根目錄,這個(gè)目錄可以是相對(duì)路徑,也可以是絕對(duì)路徑。前端存放位置
charset gb2312;         #設(shè)置網(wǎng)頁(yè)的默認(rèn)編碼格式
access_log logs/www.ixdba.net.access.log main   #用來(lái)指定此虛擬主機(jī)的訪問日志存放路徑,最后的main用于指定訪問日志的輸出格式

6、location

URL地址匹配,支持正在表達(dá)式,也支持條件判斷匹配,用戶可以通過location指令實(shí)現(xiàn)Nginx對(duì)動(dòng)、靜態(tài)網(wǎng)頁(yè)進(jìn)行過濾處理。使用location URL匹配配置還可以實(shí)現(xiàn)反向代理,用于實(shí)現(xiàn)PHP動(dòng)態(tài)解析或者負(fù)載負(fù)載均衡。

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { 
root /wwwroot/www.cszhi.com;
expires 30d;
}
#對(duì)網(wǎng)頁(yè)URL進(jìn)行分析處理,所有擴(kuò)展以.gif、.jpg、.jpeg、.png、.bmp、.swf結(jié)尾的靜態(tài)文件都交給nginx處理

7、location匹配規(guī)則

#語(yǔ)法
location [=|~|~*|^~] /uri/ { … }
 * = 嚴(yán)格匹配。如果請(qǐng)求匹配這個(gè)location,那么將停止搜索并立即處理此請(qǐng)求
 * ~ 區(qū)分大小寫匹配(可用正則表達(dá)式)
 * ~* 不區(qū)分大小寫匹配(可用正則表達(dá)式)
 * !~ 區(qū)分大小寫不匹配
 * !~* 不區(qū)分大小寫不匹配
 * ^~ 如果把這個(gè)前綴用于一個(gè)常規(guī)字符串,那么告訴nginx 如果路徑匹配那么不測(cè)     試正則表達(dá)式
eg: 
 * location / {}    匹配任意請(qǐng)求
 * location ~* .(gif|jpg|jpeg)$ {
    rewrite .(gif|jpg|jpeg)$ /logo.png;
}   不區(qū)分大小寫,匹配以gif、jpg、jpeg結(jié)尾的請(qǐng)求,并將該請(qǐng)求重定向到 /logo.png請(qǐng)求

# alias與root
 * root    實(shí)際訪問文件路徑會(huì)拼接URL中的路徑
 * alias   實(shí)際訪問文件路徑不會(huì)拼接URL中的路徑
eg:
 * location ^~ /sta/ {  
   alias /usr/local/nginx/html/static/;  
}
 請(qǐng)求:http://test.com/sta/sta1.html
 實(shí)際訪問:/usr/local/nginx/html/static/sta1.html 文件
 * location ^~ /tea/ {  
   root /usr/local/nginx/html/;  
}
 請(qǐng)求:http://test.com/tea/tea1.html
 實(shí)際訪問:/usr/local/nginx/html/tea/tea1.html 文件
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ######Nginx配置文件nginx.conf中文詳解##### #定義Nginx運(yùn)行的用戶和用戶組 user...
    憶飛閱讀 886評(píng)論 0 0
  • 配置文件詳解 upstream 配置詳解 輪詢(默認(rèn)) 每個(gè)請(qǐng)求按時(shí)間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)...
    陳小陌丿閱讀 917評(píng)論 0 0
  • nginx概述 nginx是一款自由的、開源的、高性能的HTTP服務(wù)器和反向代理服務(wù)器;同時(shí)也是一個(gè)IMAP、PO...
    逝者如斯灬閱讀 3,562評(píng)論 0 16
  • 一、Nginx的配置文件的整體結(jié)構(gòu) Nginx是通過配置文件來(lái)做到各個(gè)功能的實(shí)現(xiàn)的。Nginx的配置文件的格式非常...
    書中烏鴉不是鳥閱讀 33,577評(píng)論 2 44
  • 定義Nginx運(yùn)行的用戶和用戶組 user www www; nginx進(jìn)程數(shù),建議設(shè)置為等于CPU總核心數(shù)。 w...
    Java_xiaoman閱讀 520評(píng)論 0 0

友情鏈接更多精彩內(nèi)容