nginx指令
1.HTTP的核心模塊.
這些HTTP模塊會在編譯Nginx時(shí)自動編譯進(jìn)來,除非使用configure命令禁止編譯這些模塊.
(1)alias指令.
該指令用于在URL和文件系統(tǒng)路徑之間實(shí)現(xiàn)映射.它與root指令類似,但是網(wǎng)頁文件的root根目錄不會改變,改變的只是請求URL的文件系統(tǒng)路徑.
語法:alias file-path| directory-path ;
例: location /i/{alias /spool/w3/images/;}
在示例中,訪問URL地址"/i/top.gif",會返回文件"/spool/w3/images/top.gif"
(2)client_body_in_file_only 指令.
語法:client_body_in_file_only on|off
該指令允許將一個(gè)客戶端的請求內(nèi)容記錄到一個(gè)文件中,該文件在請求完成后不會被刪除.在內(nèi)置perl中,該指令可以用于調(diào)試$r->request_body_file 方法.
(3)client_body_in_single_buffer 指令
語法:client_body_in_single_buffer
該指令指定是否保持整個(gè)內(nèi)容在一個(gè)單一的客戶端請求緩沖區(qū)中,該指令在使用變量$request_body時(shí)被推薦使用.
(4)client_body_buffer_size指令
語法:client_body_buffer_size the_size
例 client_body_buffer_size 128k
該指令指定客戶端請求內(nèi)容的緩沖區(qū)大小.如果客戶端請求內(nèi)容大于緩沖區(qū),整個(gè)請求內(nèi)容或部分請求內(nèi)容將被寫人臨時(shí)文件.緩沖區(qū)默認(rèn)大小相當(dāng)于網(wǎng)頁大小的兩倍,為8k 或16k.
(5)client_body_temp_path指令
語法: client_body_temp_path dir-path [level1[level2[level3]
該指令用于指定存放請求內(nèi)容臨時(shí)文件的目錄.緩存目錄最多支持3層子目錄.
例: client_body_temp_path /spool/nginx/client_temp 1 2 ;
以上示例的目錄結(jié)構(gòu)類似:
/spool/nginx/client_temp/7/45/XXXXX
(6)client_body_timeout指令
語法:client_body_timeout time
該指令用于設(shè)置讀取客戶端請求內(nèi)容的超時(shí)時(shí)間.如果超過該指令設(shè)置的時(shí)間,Nginx將返回"Request time out"錯(cuò)誤信息(HTTP狀態(tài)碼為408)
(7)client_header_buffer_size指令
語法:client_header_buffer_size size
該指令用于設(shè)置客戶端請求的Header頭緩沖區(qū)大小.對絕大多數(shù)請求來說,1KB大小的Header頭緩沖區(qū)已經(jīng)足夠,但是對于Cookie內(nèi)容較大的請求來說,可能不夠用.
(8)client_header_timeout指令.
語法:client_header_timeout time
該指令用于設(shè)置讀取客戶端請求Header頭信息的超時(shí)時(shí)間,如果超過該指令設(shè)置的時(shí)間,Nginx將返回"Request time out "錯(cuò)誤信息(HTTP狀態(tài)碼為408)
(9)client_max_body_size指令
語法:client_max_body_size size
例: client_max_body_size 300m
該指令用于設(shè)置允許接受的客戶端請求內(nèi)容的最大值,即客戶端請求Header頭信息中設(shè)置的Content-Length的最大值.如果超過該指令設(shè)置的最大值.Nginx將返回"Request Entity Too Large"錯(cuò)誤信息(HTTP狀態(tài)碼為413).當(dāng)默認(rèn)值為1MB時(shí),如果Nginx服務(wù)器提供上傳1MB以上的大文件等操作,則要加大該值.
(10)default_type指令
語法:default_type MIME-type
MIME-type是用來告訴瀏覽器請求的文件媒體類型,例如:MIME-type名text/plain表示該文件為文本文件,text/html表示該文件為HTML網(wǎng)頁文件.如果Nginx無法識別該文件屬于何種MIME-type類型,則該文件標(biāo)記為default_type指令設(shè)置的MIME-type
(11)error_page code[code...][=|=answer-code] uri
該指令用于設(shè)置如果出現(xiàn)指定的HTTP錯(cuò)誤狀態(tài)碼,則返回給客戶端顯示的對應(yīng)的URI地址.
例: error_page 404 /404.html ;
(12)index指令
語法: index file [file...]
該指令用于設(shè)置Nginx的默認(rèn)首頁文件.
index index.$geo.html index.0.html /index.html
(13)internal指令
該指令用于設(shè)置某個(gè)location路徑只能在Nginx內(nèi)部使用,外部無法訪問.
location /404.html {internal;}
(14)keepalive_timeout [time]指令
該指令可使客戶端到服務(wù)器端的連接持續(xù)有效,當(dāng)出現(xiàn)對服務(wù)器的后繼請求時(shí),keep-alive功能可避免建立或重新建立連接.市場上大部分Web服務(wù)器,包括IIS,Apache,Nginx,Lighttpd都支持HTTP keep-alive.對于提供靜態(tài)內(nèi)容的網(wǎng)站來說,這個(gè)功能有用,對于負(fù)擔(dān)重的網(wǎng)站,就比較吃力了.
(15)keepalive_requests指令
語法:keepalive_requests n
設(shè)置一個(gè)keep-alive連接使用的次數(shù).一次請求結(jié)束后,如果該連接使用的次數(shù)沒有超過keepalive_requests指令設(shè)置的請求次數(shù),則服務(wù)器并不立即主動斷開連接,而是直到達(dá)到keepalive_timeout指令設(shè)置的時(shí)間,才關(guān)閉連接.
(16)large_client_header_buffers 指令
該指令用于設(shè)置客戶端請求的Header頭緩沖區(qū)大小,默認(rèn)值為4KB.客戶端請求行不能超過large_client_header_buffers指令設(shè)置的值.客戶端請求的Header頭信息不能大于large_client_header_buffers指令設(shè)置的緩沖區(qū)大小,否則會報(bào)414或400錯(cuò)誤,如果客戶端的Cookie信息較大,則須增加緩沖區(qū)大小.
(17)limit_except
該指令用于限制HTTP方法訪問location中的內(nèi)容
例: limit_except GET{
??allow 192.168.1.0/32 ;
??deny all ;
}
(18)limit_rate 指令
語法:limit_rate speed
該指令主要用來限速,限速單位是"字節(jié)數(shù)/秒",一般在提供HTTP下載等應(yīng)用中會用到該指令.限速只對一個(gè)連接起效,如果客戶端開啟兩個(gè)連接下載,下載的速度將是限速值的兩倍
例1:限制每個(gè)連接的下載速度為100KB/秒
limit_rate 100k ;
例2:在特定條件下開啟限速功能
server {
??if($slow)
??{
????set $limit_rate 4k ;
??}
}
(19)limit_rate_after指令
語法:limit_rate_after time
該指令可以設(shè)置一個(gè)字節(jié)數(shù)(1MB),下載的字節(jié)數(shù)大于該值后,limit_rate指令的限速功能將起效.對于MP3在線播放,HTTP方式的Flash FLV視頻點(diǎn)播等應(yīng)用,使用該指令將會起到不錯(cuò)的效果.
例:下載的文件字節(jié)數(shù)超過1MB后,限速為100kb/秒
limit_rate_after 1m ;
limit_rate 100k ;
(20)listen指令
該指令用于設(shè)置虛擬主機(jī)監(jiān)聽的服務(wù)器地址和端口號,你可以同時(shí)設(shè)置服務(wù)器地址和端口號,也可以指定一個(gè)IP地址,或者一個(gè)端口號,或者一個(gè)服務(wù)器名.如果listen指令只設(shè)置一個(gè)服務(wù)器名或IP地址,那么它的默認(rèn)端口號為80.
(21)location指令
該指令對不同的URI進(jìn)行不同的配置,既可以使用字符串,也可以使用正則表達(dá)式,使用正則表達(dá)式,須使用以下前綴.
1)~*,表示不區(qū)分大小寫的匹配.
2)~,表示區(qū)分大小寫的匹配.
(22)log_not_found指令
語法:log_not_found [on|off]
該指令用來啟用或禁用404錯(cuò)誤日志,這個(gè)指令可以用來禁止Nginx記錄找不到robots.txt和favicon.ico這類文件的錯(cuò)誤信息.
(23)log_subrequest指令
語法:log_subrequest [on|off]
該指令用來啟動或禁止access_log中記錄類似rewrite rules , SSI request等子請求.
(24)root指令
該指令主要用于指定請求的文檔根目錄.例如,配置內(nèi)容為location/i/{root /spool/w3;}時(shí),請求URI地址"/i/top.gif"將返回文件"/spool/w3/i/top.gif"的內(nèi)容給客戶端.
2.HTTP核心模塊中可以使用的變量.
NginxHTTP核心模塊支持一些與Apache變量名稱相同的內(nèi)置變量,例如:$http_user_agent,$http_cookie ,此外還支持一些Nginx特有的其他變量.
$arg_PARAMETER:該變量包含了當(dāng)查詢字符串時(shí),GET請求可變參數(shù)的值.
$args:這個(gè)變量等于請求行中的參數(shù).
$binary_remote_addr:二進(jìn)制格式的客戶端地址.
$content_length:這個(gè)變量等于客戶端請求頭中的content-length值.
$content_type:這個(gè)變量等于客戶端請求頭中的content-type值.
$cookie_COOKIE:客戶端請求Header頭中的cookie變量.前綴"$cookie_"加上cookie名稱的變量,該變量的值即為cookie名稱的值.
$document_root:這個(gè)變量等于當(dāng)前請求所屬的root指令設(shè)置的文檔根目錄路徑.
$limist_rate:這個(gè)變量允許限制連接速率.
$remote_addr:客戶端的IP地址.
$remote_port:客戶端的端口.
3.HTTP Access模塊
HTTP Access模塊提供了一個(gè)簡單的基于host名稱的訪問控制.通過該模塊,可以允許或禁止指定的IP地址或IP段訪問某些虛擬主機(jī)或目錄.
例:
location /{
??deny 192.168.1.1 ;
??allow 192.168.1.0/24;
??allow 10.1.1.0/16 ;
??deny all ;
}
4.HTTP Auth Basic模塊
該模塊采用基于HTTP基本身份驗(yàn)證的用戶名和密碼登錄方式,來保護(hù)你的虛擬主機(jī)或目錄location /{
??auth_basic "Restricted";
??auth_basic_user_file htpasswd ;
}
auth_basic:用于指定彈出的用戶名和密碼登錄框中提示的名稱.
auth_basic_user_file指令:用于設(shè)置htpasswd密碼文件的名稱.
5.HTTP Browser模塊
該模塊可以根據(jù)客戶端"User-agent"請求頭中的信息創(chuàng)建變量.
$modern_browser:如果瀏覽器被識別為新瀏覽器,則等于modern_browser_value指令設(shè)置的值.
$ancient_browser:如果瀏覽器被識別為舊瀏覽器,則等于ancient_browser_value指令設(shè)置的值.
$msie:如果瀏覽器被鑒定為MSIE瀏覽器,該變量的值為1.
6.HTTP Charset模塊
該模塊用來添加文本編碼類型到HTTP應(yīng)答頭"Content-Type indicated".此外,該模塊還能夠?qū)⒎?wù)器端網(wǎng)頁原來的文本編碼轉(zhuǎn)換成另一種文本編碼,輸出給客戶端.
例如:
charset windows-1251
source_charset koi8-r
charset指令用于添加文本編碼類型到HTTP應(yīng)答頭"Content-Type indicated" .如果編碼與source_charset指令設(shè)置的編碼不一樣,將進(jìn)行重編碼.參數(shù)為"off".
override_charset on|off
當(dāng)該指令開啟時(shí),如果后端的FASTCGI服務(wù)器響應(yīng)頭帶有"Content-Type"頭信息,將開啟編碼轉(zhuǎn)換.
7.HTTP Empty Gif模塊
該指令可以保持一個(gè)1X1像素的透明GIF圖片在內(nèi)存中,當(dāng)請求該圖片時(shí),能夠得到非??斓庙憫?yīng)速度.
例:location = /_.gif{ empty_gif;}
8.geo模塊
geo模塊主要用于做全局負(fù)載均衡,可以根據(jù)不同的客戶端IP訪問到不同的服務(wù)器.一些針對不同地區(qū)的客戶,使用不同的服務(wù)器去處理的需求,可以使用geo模塊.
配置如下:
geo $geo{
??default 0 ;
??include conf/geo.conf ;
??127.0.0.1/32 2 ;
??127.0.0.0/24 ru ;
??192.168.1.0/24 1 ;
??10.1.0.0/16??1 ;
}
defalut:任何IP地址,相當(dāng)于0.0.0.0/0
include:可以引用一個(gè)文本文件,里面包含geo的配置內(nèi)容.
9.Gzip模塊
Gzip模塊主要用于對返回給客戶端的網(wǎng)友采用gzip進(jìn)行壓縮輸出.
目前90%的瀏覽器都支持gzip和deflate兩種壓縮格式.如果瀏覽器支持gzip壓縮,就會在HTTP請求頭中發(fā)送一行"Accept-Encoding:gzip,deflate",這時(shí)候Nginx服務(wù)器可以輸出經(jīng)過gzip壓縮后的頁面給瀏覽器,瀏覽器再解壓.這種方式可以將網(wǎng)絡(luò)線路上傳輸?shù)拇罅繑?shù)據(jù)消減60%以上,不僅節(jié)省了服務(wù)器帶寬,同時(shí)加速了用戶的下載速度和體驗(yàn).
(1)gzip指令.
gzip on|off 該指令用于開啟或關(guān)閉gzip模塊
(2)gzip_buffers指令
gzip_buffers 4 4k/8k
設(shè)置系統(tǒng)獲取幾個(gè)單位的緩存用于存儲gzip的壓縮結(jié)果數(shù)據(jù)流,例如4 4k代表以4k為單位,按照原始數(shù)據(jù)大小以4k為單位的4倍申請內(nèi)存.如果沒有設(shè)置,默認(rèn)值是申請跟原始數(shù)據(jù)相同大小的內(nèi)存空間去存儲gzip壓縮結(jié)果.
(3)gzip_comp_level指令
gzip 壓縮比,1壓縮比最小處理速度最快,9壓縮比最大但處理速度最慢(傳輸快但比較消耗cpu)
(4)gzip_min_length指令
gzip_min_length length
設(shè)置允許壓縮的頁面最小字節(jié)數(shù),頁面字節(jié)數(shù)從header頭的Content-Length 中進(jìn)行獲取,默認(rèn)值是0,不管頁面多大都壓縮,建議設(shè)置成大于1k的字節(jié)數(shù),小于1k可能會越壓越大.
(5)gzip_http_version指令
gzip_http_version 1.0|1.1
識別http的協(xié)議版本.由于早期的一些瀏覽器或http客戶端,可能不支持gzip自解壓,用戶會看到亂碼,所以做一些判斷還是很有必要的.
(6)gzip_proxied指令
Nginx作為反向代理的時(shí)候啟用,開啟或關(guān)閉后端服務(wù)器返回的結(jié)果,匹配的前提是后端服務(wù)器必須要返回包含Via的header頭.
(7)gzip_types指令
語法:gzip_types mime-type[mime-type...]
匹配mime類型進(jìn)行壓縮,(無論是否指定)"text/html"類型總是會被壓縮的.
10.HTTP Headers模塊
這組指令主要用來設(shè)置Nginx返回網(wǎng)頁內(nèi)容給用戶時(shí),附件的Header頭信息.
(1)add_header指令
當(dāng)HTTP應(yīng)答狀態(tài)碼為200,204,301,302,或304時(shí),增加指定的Header頭,其中Header頭的值可以使用變量.
(2)expires指令
使用本指令可以控制HTTP應(yīng)答中的"Expires"和"Cache-Control"的Header頭信息,起到控制瀏覽器頁面緩存的作用.
語法:expires [time|epoch|max|off]
11.HTTP Index模塊
該模塊可以用于指定虛擬主機(jī)目錄下的默認(rèn)首頁文件名稱.如果指定了多個(gè)文件,那么將按照從左到右的順序逐個(gè)查找.可以在列表末尾加上一個(gè)絕對路徑名的文件.
12.HTTP Referer模塊
當(dāng)瀏覽器向Web服務(wù)器發(fā)送請求的時(shí)候,一般會帶上Referer,告訴服務(wù)器我是從哪個(gè)頁面鏈接過來的,服務(wù)器借此可以獲得一些信息用于處理,例如防盜鏈.因?yàn)镠TTP Referer頭信息是可以通過程序來偽裝生成的.所以通過Referer防盜鏈并非100%可靠.
13.HTTP Limit Zone模塊
該模塊用于針對條件,進(jìn)行會話的并發(fā)連接數(shù)控制,例如限制每個(gè)IP的并發(fā)連接數(shù).
limit_zone one $binary_remote_addr 10m ;
在以上示例中,定義一個(gè)叫"one"的記錄區(qū),總?cè)萘繛?0MB,以容量$binary_remote_addr作為會話的判斷基準(zhǔn)(即一個(gè)地址一個(gè)會話)
語法: limit_conn zone_name max_clients_per_ip
該指令用于指定一個(gè)會話最大的并發(fā)連接數(shù).當(dāng)超過指定的最大并發(fā)連接數(shù)時(shí),服務(wù)器將返回503.
14.HTTP Limit Req模塊
該模塊允許你對Session會話,單個(gè)客戶端IP地址,限制指定單位時(shí)間內(nèi)的并發(fā)請求數(shù).你可以在一定程度上減輕多應(yīng)用服務(wù)器的DOS惡意攻擊.
15.HTTP Log模塊
(1)access_log指令.該指令用于設(shè)置日志文件的路徑,格式和緩沖區(qū)大小.使用"off"作為唯一參數(shù),將不記錄日志文件.如果沒有指定日志格式,將默認(rèn)采用"combined"格式.緩沖區(qū)的大小必須小于寫人磁盤文件的原子記錄大小.
(2)log_format指令.該指令用來描述日志格式.在日志的格式中,可以使用Nginx的大多數(shù)通用變量,以及一些僅在寫日志時(shí)存在的變量.
16.HTTP Map 模塊
該模塊允許分類,或者映射一組值到一組不同的值,并將這些值存儲在一個(gè)變量中.
例:
map $http_host $name{
??hostnames ;
??default 0 ;
??example.com 1 ;
??*.example.com 1 ;
??test.com 2 ;
??*.test.com 2 ;
??.site.com 3 ;
}
17.HTTP Memcached模塊
Memcached是一個(gè)高性能的分布式內(nèi)存對象緩存系統(tǒng),用于動態(tài)Web應(yīng)用以減輕數(shù)據(jù)庫負(fù)載.它通過在內(nèi)存中緩存數(shù)據(jù)和對象來減少讀取數(shù)據(jù)庫的次數(shù),從而提供動態(tài),數(shù)據(jù)庫驅(qū)動網(wǎng)站的速度.Memcached基于一個(gè)存儲鍵/值對的hashmap.其守護(hù)進(jìn)程(daemon)是用C寫的.但是客戶端可以用任何語言來編寫,并通過Memcached協(xié)議與守護(hù)進(jìn)程通信,且它并不提供冗余.當(dāng)某個(gè)服務(wù)器停止運(yùn)行或崩潰了,所有存放在該服務(wù)器上的鍵/值對都將丟失.Memcached(官方網(wǎng)站:http://www.memcached.org/)由Danga Interactive開發(fā),用于提升LiveJournal.com訪問速度.LJ每秒動態(tài)頁面訪問量幾千次,用戶700萬.Memcached將數(shù)據(jù)庫負(fù)載大幅降低,以便更好地分配資源,更快地訪問.
18.HTTP Proxy模塊
該模塊用于轉(zhuǎn)發(fā)請求到其他的服務(wù)器.keep-alive是指在HTTP/1.1協(xié)議中,同一個(gè)連接中發(fā)出和接收多次HTTP請求,節(jié)省了創(chuàng)建TCP連接過程的時(shí)間開銷.而HTTP/1.0協(xié)議不具備keep-alive請求的能力.因此,在HTTP/1.0協(xié)議中,每一個(gè)到后端的請求都會創(chuàng)建一個(gè)連接,傳輸完成后會刪除這個(gè)連接.Nginx采用HTTP/1.1協(xié)議與瀏覽器進(jìn)行通信,采用HTTP/1.0協(xié)議與后端服務(wù)器進(jìn)行通信.
proxy_cache相關(guān)指令集
1)proxy_cache
2)proxy_cache_path
3)paroxy_cache_methods
4)proxy_cache_min_uses
5)proxy_cache_valid
6)proxy_cache_use_stale
14.HTTP SSI 模塊
SSI,通常稱為服務(wù)器嵌入.SSI的工作原理:將內(nèi)容發(fā)送到瀏覽器之前,可以使用"服務(wù)器端包含(SSI)"指令將文本,圖形或應(yīng)用程序信息包含到網(wǎng)頁中.例如可以使用SSI包含時(shí)間/日期戳,版權(quán)聲明或供客戶填寫并返回的表單.對于在多個(gè)文件中重復(fù)出現(xiàn)的文本或圖形,使用包含文件是一種簡便的方法.將內(nèi)容存入一個(gè)包含文件中即可,而不必將內(nèi)容輸入所有文件。
15.HTTP Userid模塊.
該模塊相當(dāng)于Apache的mod_uid模塊,主要用于做客戶端的身份標(biāo)識.它主要使用$uid_got和$uid_set變量.
轉(zhuǎn)載于:https://www.cnblogs.com/weiji100/p/3964782.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
- 上一篇: 怒卸python3.4.1
- 下一篇: checkbox和radio的样式美化问