2-4-運維必備核心技能-nginx實現web服務配置
阿新 • • 發佈:2019-03-17
小時 deny 代理 存儲 bytes isa ive 過濾器 用戶驗證
定義客戶端請求的相關配置
12、keepalive_timeout timeout [header_timeout]
設定保持連接的超時時長,0表示禁止長連接,默認為75s
13、keepalive_requests number
在一次長連接上所允許請求的資源的最大數量,默認為100,如果第12項設置為0,此項沒有用處
14、keepalive_disable none | browser ...
對哪種瀏覽器禁用長連接,現在絕大多數瀏覽器都支持,但可以設置禁用(防止爬蟲)
15、send_timeout time---客戶端斷開連接了,服務端要重試的發送,指這個時間
向客戶端發送響應報文的超時時長,此處,是指兩次寫操作之間的間隔時長
對應的就應該有resolver_timeout---主機名解析時用到的
16、client_body_buffer_size size---如果nginx允許上傳文件或post方法,請求報文中才有body,這個大小根據網站的類型調整(論壇要大,電商不動)
用於接收客戶端請求報文的body部分的緩沖區大小;默認為16k;超出此大小時,其將被暫存到磁盤上的由client_body_temp_path指令所定義的位置(發起磁盤IO,這會影響性能)
17、client_body_temp_path path [level1 [level2 [level3]]]
設定用於存儲客戶端請求報文的body部分的臨時存儲路徑及子目錄結構和數量---把用戶的url做一次hash計算,然後根據hash值取hash值的幾位(1到2位)創建多少個子目錄,從左到右或從右到左,創建一級二級三級子目錄
16進制的數字
client_body_temp_path /var/tmp/client_body 2 1 1
1:表示用一位16進制數字表示一級子目錄:0-f
2:表示用2位16進制數字表示二級子目錄:00-ff
2:表示用2位16進制數字表示三級子目錄:00-ff
echo http://www.ilinux.io/index.html | md5sum結果是1182a。。。。。。hash值
對客戶端進行限制的相關配置:
18、limit_rate rate
限制響應給客戶端的傳輸速率,單位是bytes/second,0表示無限制
登陸的用戶一個速率,沒登陸的另外一個速率
19、limit_except method ... {...}---互聯網通常只允許get head post方法,其他的太危險了
限制對指定的請求方法之外的其它方法的使用客戶端
limit_except GET {---除了get方法以外的方法,只允許,其他都不允許
allow 192.168.1.0/24;
deny all;
}
文件操作優化的配置
20、aio on | off |threads[=pool];---可以使用多少個線程池,一般設置為on
是否啟用aio功能;
21、directio size | off;---不是關鍵選項,使用默認值即可,不用設置
在linux主機啟用O_DIRECT標記,此處意味文件大於等於給定的大小時使用,例如directio 4m;
22、open_file_cache off;---幾乎所有緩存都是用LRU,最近最少使用
open_file_cache max=N [inactive=time];
nginx可以緩存以下三種信息:---緩存的是元數據信息而不是文件內容
(1)文件的描述符,文件大小和最近一次的修改時間
(2)打開的目錄結構
(3)沒有找到的或者沒有權限訪問的文件的相關信息
max=N:可緩存的緩存項上限;達到上限後會使用LRU算法(最近最少使用)實現緩存管理---這裏需要緩存到內存中,占用內存空間,小心設置
inactive=time:緩存項的非活動時長,在此處指定的時長內未被命中的或命中的次數少於open_file_cache_min_uses指令所指定的次數的緩存項即為非活動項
23、open_file_cache_valid time;
緩存項有效性的檢查頻率;默認為60s
24、open_file_cache_min_uses number;
在open_file_cache指令的inactive參數指定的時長內,至少應該被命中多少次方可被歸類為活動項
25、open_file_cache_errors on | off
是否緩存查找時發生錯誤的文件一類的信息;
ngx_http_access_module模塊:
實現基於IP的訪問控制功能
26、allow address | CIDR |unix: | all;
27、deny address | CIDR |unix: | all;
ngx_http_auth_basic_module模塊
實現基於用戶的訪問控制,使用basic機制進行用戶認證;
28、auth_basic string | off
29、auth_basic_user_file file;
location /admin/ {
alias /webapps/app1/data/;
auth_basic "Admin Area";
auth_basic_user_file /etc/nginx/.ngxpasswd;
}
註意:htpasswd命令由httpd-tools所提供;yum install -y httpd-tools
htpasswd -c -m /etc/nginx/.ngxpasswd tom---會彈出輸入密碼,用戶名tom
配置文件中:
location ~* ^/(admin|login) {---以admin或login開頭做認證
auth_basic "admin area or login url";
auth_basic_user_file /etc/nginx/.ngxpasswd;---用這個文件做認證
}
mkdir /data/nginx/vhost1/admin
vim /data/nginx/vhost1/admin/index.html
訪問這個路徑,客戶端會彈出用戶驗證的消息,服務器提示的就是admin area or login url32:00
ngx_http_stub_status_module模塊---nginx內建的狀態頁
用於輸出nginx的基本狀態信息;
Active connections:291
server accepts handled requests
16630948 16630948 31070465
Reading:6 Writing:179 Waiting:106
Active connections:活動狀態的連接數;
accepts:已經接受的客戶端請求的總數
handled:已經處理完成的客戶端請求的總數;
requests:客戶端發來的總的請求數;
Reading:處於讀取客戶端請求報文首部的連接的連接數
Writing:處於向客戶端發送響應報文過程中的連接數;
Waiting:處於等待客戶端口、發出請求的空閑連接數;
30、stub_status:---註意,這是服務器內部信息,不能隨便訪問,可以做auth-basic認證
配置示例:
location /basic_status {
stub_status;
}
ngx_http_log_module模塊
he ngx_http_log_module module writes request logs in the specified format.
31、log_format name string ...;
string可以使用nginx核心模塊及其它模塊內嵌的變量;
課外作業:為nginx定義使用類似於httpd的combined格式的訪問日誌;
32、access_log path [format[buffer=size][gzip[=level]][flush=time][if=condition]];---可以定義在http上下文中
access_log off;---關閉訪問日誌,有些監控系統采集可以關閉
訪問日誌文件路徑,格式及相關的緩沖的配置;
buffer=size---服務器並發量很大,可以把日誌緩存到內存中,空閑時再寫入磁盤
flush=time
gzip:日誌文件可以壓縮存放,但是壓縮會浪費cpu時鐘周期,一般不壓縮
33、open_log_file_cache max=N[inactive=time][min_uses=N][valid=time];
open_log_file_cache off;---一旦超出利用LRU
緩存和緩沖的區別:緩存一般為了加速讀,緩沖為了加速寫操作
緩存各日誌文件相關的元數據信息;
max:緩存的最大文件描述符數量;
min_uses:在inactive指定的時長內訪問大於等於此值方可被當作活動項;
inactive:非活動時長
valid:驗證緩存中各緩存項是否為活動項的時間間隔;
ngx_http_gzip_module:---浪費的cpu時間可以用傳輸時間的減小彌補,最終節約了帶寬
The nbx_http_gzip_module module is a filter that compresses responses using the "gzip" method.This often helps to reduce the size of transmitted data by half or even more.
1、gzip on | off;
Enables or disables gzipping of responses.
2、gzip_comp_level level;---默認是1
Sets a gzip compression level of a response.Acceptable values are in the range from 1 to 9.
3、gzip_ddisable regex ...;---哪些瀏覽器不支持壓縮可以禁用
Disables gzipping of responses for requests with "User-Agent" header fields matching any of the specified regular expressions.
4、gzip_min_length length;---默認 20
啟用壓縮功能的響應報文大小閾值;
5、gzip_buffers number size;
gzip_buffer 32 4k | 16 8k;
支持實現壓縮功能時為其配置的緩沖區數量及每個緩存區的大小;多少段,每段的大小
6、gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any ...;
nginx作為代理服務器接收到從被代理服務器發送的響應報文後,在何種條件下啟用壓縮功能的;
off:對代理的請求不啟用
no-cache,no-store,private:表示從被代理服務器收到的響應報文首部的Cache-Control的值為此三者中任何一個,則啟用壓縮功能;
7、gzip_types mime-type ...;
壓縮過濾器,僅對此處設定的MIME類型的內容啟用壓縮功能;
示例:
gzip on;
gzip_proxy any;
gzip_types text/xml text/css application/javascript;
8、gzip_vary on | off;
要不要在響應報文中如果出現gzip,啟用一個Vary:Accept-Encoding可以接收各種各樣的格式
註意:一般只需要gzip on,gzip_comp_level,gzip_types這三個選項就可以了,如果有代理還要gzip_proxied
2-4-運維必備核心技能-nginx實現web服務配置