您好,登錄后才能下訂單哦!
URL統(tǒng)一資源定位符的形式:
shceme://username:password@host:port/path;params?query#frag
http事務(wù):一次請求和一次響應(yīng)構(gòu)成一次事務(wù)
request請求格式:
<method><URL><VERSION> HEADERS <body>
response響應(yīng)格式:
<VERSION><STATUS><REASON-PHTASE> HEADERS <body>
Method請求方法: GET/HEAD/POST,PUT/DELETE,TRACES,OPTIONS
Status code:
1xx: 2xx:成功響應(yīng)碼 3xx:重定向類的響應(yīng)碼 4xx:客戶端錯誤 5xx:服務(wù)器端錯誤
不被花括號所包含的是main block 配置段,也是全局配置段
event{ } 與事件驅(qū)動相關(guān)的配置段 http{ } 與http/https相關(guān)的配置段 mail{ }與郵件代理相關(guān)的配置段 stream{ }與負載均衡相關(guān)的配置段
http{ ... 配置各個server的全局配置段 server{ listen 80; 監(jiān)聽的端口 server_name www.example.com root /web/hosts/ alias location {OPERATOR} URL{ ... if CONDITION{ ... } } }每一個server是一個虛擬站點 }
指定work進程的運行身份:
user nginx group;
指明pid文件的存放路徑
pid /var/run/nginx.pid;
包含其他配置文件片段
include file_name|mask;
指明要動態(tài)裝載的模塊
load_module file_name;
錯誤日志:
error_log /var/log/nginx/error.log varn;
worker進程能夠打開文件描述符的數(shù)量上限:
worker_rlimit_nofile 20; 配置最好與ulimit -n 數(shù)值相同,修改文件描述符的數(shù)量ulimit -HSn 180000
生成work進程數(shù)
worker_processes 3 | auto;
woker進程的優(yōu)先級:默認為0
worker_priority -9;
nginx的worker進程與cpu綁定
wokrer_cpu_affinity 1000 0100 0010| auto; cpu mask所代表的含義: 1000 : 四核心cpu的最后一個 0100 : 四核心cpu的倒數(shù)第二個 ...
是否以守護進程的方式運行
daemon on|off;
是否以master/worker模型運行
master_process on| off;
指定錯誤日志路徑及級別
error_log file warn; 指明錯誤日志路徑及名稱時不可引用變量
每個worker進程所能響應(yīng)的最大并發(fā)數(shù)
worker_connetctions 65535; 一臺服務(wù)器所能承載的并發(fā)響應(yīng)總數(shù) worker_processes * worker_iconnections
指明并發(fā)鏈接請求的處理方法:
use epoll;
worker進程接受新請求的方法
accept_mutex on|off; 如果為on則worker進程輪流接受新的請求 如果為off則worker進程都會接收到通知,空閑的接受請求
server{ listen address:port default_server ssl http2 backlog=123 rcvbuf=512 sndbuf=512; #default_server:指定為默認虛擬站點 #ssl : 限制僅能通過ssl間接站點 #http2: 指明http協(xié)議的版本 #backlog=number: 后援隊列長度 #rcvbuf=接收緩沖區(qū)大小 #sndbuf=發(fā)送緩沖區(qū)大小 server_name SERVER_NAME; #SERVER_NAME 支持通配符通配; #例如*.abc.com #支持~以字符開頭的正則表達式 #例如~^www.*\.abc.com$ #匹配的優(yōu)先次序: #1.精確匹配 #2.左側(cè)匹配 #3.右側(cè)匹配 #4.正則表達式匹配 root /PATH/DOCUMENT_ROOT; 指明站點的根目錄 }
在keepalived模式下的連接是否啟用TCP_NODELAY功能
tcp_nodelay on|off;
是否啟用sendfile功能:
sendfile on|off;
在sendfile 模式下是否開啟TCP_CORK功能:
tcp_nopush on|off;
指定站點的根目錄,用于文件系統(tǒng)與url的映射關(guān)系
root path;
匹配URL所映射的系統(tǒng)路徑的關(guān)系
location [ = | ~ | ~* | ^~ ] url {...} 在一個server配置段中可以有多個location的配置段 nginx根據(jù)匹配的不同的url將其資源與不同的路徑進行映射 = : 對url做精確匹配 例如:location = / { ... } ~ : 對url做正則表達式匹配,區(qū)分字符大小寫; ~* : 對rul正則表達式匹配,不區(qū)分大小寫; ^~ : 對rul左半部分正則表達式匹配,不區(qū)分大小寫 無符號: 對此url為開頭的所有url的做匹配 匹配的優(yōu)先級: = , ^~ , ~/~* , 無符號
示例:
server{ root /web/hosts/vhsost1 location /wcdma { root /web/hosts/wcdma/ index index.html index index.php } }
定義路徑的別名
location /p_w_picpaths/ { alias /web/data/p_w_picpaths/; }
定義站點的默認首頁資源:
index file; 例如: index index.html index.htm index
定義錯誤的返回頁面
error_page 404 = 200 /eror_page #相對路徑
接受多個路徑作為參數(shù),當一個資源 無法找到時自動尋找下一個,否則找默認位置
try_files file ... url;
示例:
location / { try_files index.html index.htm @default; } location @default { root /web/hosts/error; index index.html; }
配置保持鏈接的超時時長, 0表示進制長連接模式
keepalive_timeout 75;
單個長連接上所能請求的最大資源數(shù)
keepalive_requests 100;
對哪種瀏覽器禁用長連接模式
keepalive_disable none|browser;
向客戶端發(fā)送響應(yīng)報文的超時時長,指兩次寫操作之間的時間間隔
send_timeout 20;
用于接受客戶端請求報文body部分的緩沖區(qū)大小,如果超出此大小則將被存儲在磁盤上由client_body_temp_path所指定的位置
client_body_buffer_size size;
指定用于存儲接受客戶端請求報文的body部分的位置
client_body_temp_path /var/tmp/client_body 2 1 1; 2:第一個數(shù)字2表示用2位16進制數(shù)個作為1級目錄 1:第二個數(shù)字1表示用1位16進制數(shù)個作為2級目錄 ...
限制響應(yīng)給客戶端的傳輸速率,單位為bytes/ second , 0 表示無限制
limit_rate 500;
限制除了指定方法的客戶端
例如: limit_except GET { allow 110.11.223.0/24; deny all; }
是否開啟aio機制
aio on|off | threads [=pool];
是否啟用directio機制,在LINUX主機啟用O_DIRECT標記,當請求大于設(shè)定值時,
直接跳過內(nèi)核的緩存的進程直接讀取硬盤,用于命中率較差或較大文件.
directio size | off;
是否啟用打開文件緩存:
open_file_cache off;
open_file_cache max=200 inactive=60;
nginx 可以緩存的三種信息:
1.文件描述符.文件大小,最近一次修改時間; 2.打開目錄的結(jié)構(gòu) 3.沒有找到的或沒有權(quán)限訪問的文件相關(guān)信息; max=200 緩存項的上限,達到上限則使用LRU算法管理 inactive=time 緩存項的非活動時長,指定時間內(nèi)沒有被訪問的,或命中次數(shù)少于open_file_cache_min_uses指令所指定的次數(shù)的緩存項
緩存有效性檢查頻率,時間
open_file_cache_valid 60;
在open_file_cache inactive所指定的時間內(nèi),緩存所訪問的次數(shù)少于該數(shù)的被歸類為非活動項
open_file_cache_min_users 1;
是否緩存查找錯誤的信息
open_file_cache_errors on| off;
allow ipaddress; deny ipaddress;
實現(xiàn)基于訪問控制,basic認證方式(需要借助hdpasswd生成用戶文件)
auth_basic string|off; auth_basic_user_file file_name;
示例:
location /admin/ { alias /web/vhosts/app1/data; auth_basic "Admin Area"; auth_basic_user_file /etc/nginx/.ngxpasswd; } ~]# htpasswd -c -m /etc/nginx/.ngxpasswd tom
用于輸出nginx的基本狀態(tài)信息:
Active connections: 活動狀態(tài)的連接數(shù); accepts : 已經(jīng)接受的客戶端的請求總數(shù); handled : 已經(jīng)處理完成的請求總數(shù); requests : 客戶端發(fā)來的總的請求總數(shù); reading : 處于讀取客戶端請求報文首部的鏈接總數(shù); writing : 處于向客戶端發(fā)送響應(yīng)的過程的連接數(shù); waiting : 處于等待客戶端發(fā)出請求的空閑連接數(shù);
示例:
stub_status; location /basic_status { stub_status; }
日志格式:
log_format name string; string可以使用nginx核心模塊的吃內(nèi)置變量 access_log /var/log/nginx/access.log format buffer=512 gzip=1 flush=time if=condition; access_log off; buffer=512 定義緩沖區(qū)的大小 flush=time 刷新時間 open_log_file_cache max=100 inactive=60 min_uses=1 valid=60; open_log_file_cache off; 緩存各日志文件相關(guān)的元數(shù)據(jù); max 緩存的文件描述符的最大個數(shù) min_uses 在inactive時間內(nèi)最少被訪問的次數(shù) inactive 非活動時長數(shù); valid 驗證緩沖項是否為活動項的時間間隔;
傳輸數(shù)據(jù)時壓縮傳輸之用
gzip on|off;
壓縮級別:
gzip_com_level 1;
指明哪些客戶端不進行壓縮:
gzip_disable regex...;
指明壓縮傳輸?shù)淖钚≈?/p>
gzip_min_length 60k;
指明壓縮傳輸?shù)木彌_區(qū)個數(shù)及每個的大小
gzip_buffers 20 100;
nginx作為代理服務(wù)器時,接受到從被代理服務(wù)器發(fā)送的響應(yīng)報文后,以何種的條件啟用壓縮
gzip_proxied off | expired |no-cache |nostore | private | no_last_modified | no_etag |auth | any ; off:對代理的請求不啟用 no-cache,no-store,private:表示從被代理服務(wù)器收的響應(yīng)報首部的Cahce_control的值為三者中的一個時啟用壓縮;
針對某些類型啟用壓縮:
gzip_types mime-type; 是一種壓縮過濾器,僅對該類型的壓縮 示例: gzip on; gzip_comp_level 6; gzip_min_length 64; gzip_proxied any; gzip_types text/xml text/css application/javascript;
啟用https功能
ssl on|off;
指定主機使用的ped格式的證書文件
ssl_certificate file;
指明主機證書與之對應(yīng)的私鑰文件
ssl_certificate_key file;
指明ssl 協(xié)議的版本
ssl_protols [SSLv2] [SSLv3] TLSv1 TLSv1.1 TLSv2 ;
指明openssl內(nèi)建的緩存,此緩存為每個worker進程私有以及共享的緩存名大小;
ssl_session_cache off|none| builtin 500 shared:name:500
指明客戶端的鏈接可以復(fù)用ssl session cache中緩存的ssl參數(shù)的有效時長
ssl_session_timeout 60;
示例:
server{ listen 443 ssl; server_name www.abc.com; root /web/vhsts/ssl/; ssl on; ssl_certificate /etc/nginx/ssl/nginx.crt; ssl_certificate_key /nginx/ssl/nginx.key; ssl_protocols TLSv1 tlsv1.1 tlsv2 sslv2 sslv3; ssl_session_cache shared:sslcache:20m; }
將用戶請求的URL基于regex所描述的模式進行檢查,匹配到的url將重新替換為新的url;
rewrite regex replacement flag
此模式值得注意的是:如果在同一級別下配置多個rewrite規(guī)則, 自上而下逐個匹配,完成匹配之后再次進行新的url繼續(xù)進行匹配,具有循環(huán)的機制
[flag]的標志位用于控制此循環(huán)機制; last:重寫完成后停止對當前URL在當前l(fā)ocation中的后續(xù)的其他重寫機制,而后對新的URL啟動新訓(xùn)創(chuàng)業(yè)的重寫機制; break:重寫完成后停止對當前URL在當前l(fā)ocation中后續(xù)的重寫操作,直接跳出重寫模塊 redirect:重寫完成之后臨時重定向方式直接返回給客戶端,客戶端重新請求新的URL不能以http://或https://開頭
如果replacement 是以http://或者htts://開頭,則替換后的結(jié)果會直接以重定向的方返回給客戶端
301:永久重定向 return 返回給客戶端狀態(tài)碼 return code text; return code URL; return URL;
是否開啟重寫日志:
return_log on|off;
if (condition) {...}語句,一個新的配置條件滿足時,執(zhí)行配置塊中的配置指令:
condition: 比較操作符: == != ~: 模式匹配,區(qū)分大小寫; ~*:模式匹配,不區(qū)分大小寫; !~:模式不匹配, 區(qū)分大小寫; !~:模式不匹配, 不區(qū)分字符大小寫; 文件及目錄存在性判斷: -e, !-e -f, !-f -d, !-d -x, !-x
用戶自定義變量:
set $variable value;
定義referer首部的合法可用值;
valid_referers none | blocked | server_names| string ..; none: 請求報文首部沒有referer首部; blocked: 請求報文的referer首部沒有值; server_name: 參數(shù), 有值做為主機名或主機名模式; arbitrary_string: 直接字符串,但可使用*作通配符; regular expression:指定的正則表達式模式匹配到的字符串; 要使用~開頭, 例如 : ~.*\.acb\.com;
配置示例:
valid_referers none block server_names *.abc.com abc.com ~\.abc\.com; if($invalid_referer) { return 403; }
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。