1. 程式人生 > >2-4-運維必備核心技能-nginx實現web服務配置

2-4-運維必備核心技能-nginx實現web服務配置

小時 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服務配置