1. 程式人生 > >Nginx配置檔案-3

Nginx配置檔案-3

設定黑白名單:

語法:
allow
deny

作用位置:
http, server, location, limit_except

具體實現:
server {
    server_name www.a.com;
    listen 80;
    root /web/a.com;
    index index.html;
    server_tokens off;

    location /test {
        root /www/html;
        deny 172.20.23.23;
        allow 172.20.23.33;
        deny all;
    }

    location /test1 {
        alias /mydata/html;
    }

}

測試訪問:
[
[email protected]
:17:48~]#curl http://www.a.com/test/ <h1>test location page for nginx</h1> 更改配置: allow 172.20.23.33; --->換成deny 測試: [[email protected]:21:16~]#curl http://www.a.com/test/ <html> <head><title>403 Forbidden</title></head>

基於使用者的認證:

關鍵語法:
auth_basic "提醒語句"
官網說明:
Syntax: auth_basic string | off;
Default:    
auth_basic off;
Context:http, server, location, limit_except

auth_basic_user_file
官網說明:
Syntax: auth_basic_user_file file;
Default:    —
Context:http, server, location, limit_except

具體使用:
server {
        location /test1 {
        alias /mydata/html;
        auth_basic "test nginx";
        auth_basic_user_file /etc/nginx/conf.d/.npasswd;
    }
}

設定使用者密碼:
[
[email protected]
:28:47conf.d]#htpasswd -c -m /etc/nginx/conf.d/.npasswd tom New password: Re-type new password: Adding password for user tom 測試: [[email protected]:32:56~]#curl -u tom:123456 http://www.a.com/test1/ <h1>test alias for nginx</h1>

檢視狀態資訊:

stub_status  on|off

具體使用:
server {
    location /status {
        stub_status on;
        allow 172.20.23.33;
        deny all;
     }

}

具體資訊解析:
Active connections:當前狀態,活動狀態的連線數 
accepts:統計總值,已經接受的客戶端請求的總數 
handled:統計總值,已經處理完成的客戶端請求的總數 
requests:統計總值,客戶端發來的總的請求數 
Reading:當前狀態,正在讀取客戶端請求報文首部的連線的連線數 
Writing:當前狀態,正在向客戶端傳送響應報文過程中的連線數 
Waiting:當前狀態,正在等待客戶端發出請求的空閒連線數

設定訪問日誌格式:

設定格式:
log_format [log_name] '$1 $2 $3';
設定在http段中
引用日誌格式:
access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];

具體使用:
自定義日誌格式:
log_format test '$remote_addr:$remote_port $request_method $remote_user $status $http_user_agent $bytes_sent $gzip_ratio';  
使用自定義格式:
server {
    server {
    server_name www.a.com;
    listen 80;
    root /web/a.com;
    index index.html;
    server_tokens off;
    access_log /web/a.com/a.com.log test;
}

http核心模組的內建變數:
 $uri:當前請求的uri,不帶引數
 $host:http請求報文中host首部,如果請求中沒有host首部,則以處理此請求的虛擬主機名
  代替!
 $request_uri:請求的uri,帶完整引數
 $hostname:nginx服務執行在的主機的主機名
 $remote_addr:客戶端ip
 $remote_port:客戶端埠
 $remote_user:使用使用者認證時客戶端使用者輸入的使用者名稱
 $request_filename:使用者請求中的RUI經過本地root或alias轉換後對映的本地的檔案或路徑
 $request_method:請求方法
 $server_addr:伺服器地址
 $server_name:伺服器名稱
 $server_port:伺服器埠
 $server_protocol:伺服器向客戶端傳送響應時的協議 如http/1.1
 $scheme:在請求中使用的scheme,如https http,哪個協議
 $http_HEADER:匹配請求報文中指定的HEADER  $http_host匹配請求報文中的host首部
 $sent_http_HEADER:匹配響應報文中指定的HEADER---要小寫
  例子:$http_content_type匹配響應報文中的content-type首部
 $document_root:當前請求對映到的root配置項
日誌格式變數: 
 $status:用來引用狀態碼
 $bytes_sent:傳送的位元組數
 $http_referer:從哪個頁面跳轉過來的
 $http_user_agent:瀏覽器的型別
 $gzip_ratio:壓縮比例,配合壓縮功能

設定日誌快取:

open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];  

open_log_file_cache off;  
快取各日誌檔案相關的元資料資訊   
max:快取的最大檔案描述符數量  
min_uses:在inactive指定的時長內訪問大於等於此值方可被當作活動項  
inactive:非活動時長  
valid:驗證快取中各快取項是否為活動項的時間間隔 

壓縮功能:

關鍵設定:
gzip on|off
官網說明:
Syntax: gzip on | off;
Default:    
gzip off;
Context:http, server, location, if in location
基本設定項:
gzip_buffers [n]:壓縮時緩衝大小
gzip_comp_level[0--9]:壓縮等級
gzip_distable [對哪種瀏覽器,檔案不壓縮]msie6
gzip_min_length [值]:內容大於這個值才會壓縮
gzip_http_version:壓縮後構建響應報文,使用那個版本 1.0/1.1
gzip_types:只對那些型別的網頁檔案做壓縮預設包含有text/html
gzip_buffers number size; 支援實現壓縮功能時緩衝區數量及每個快取區的大小  
預設:32 4k 或 16 8k
gzip_vary on | off;如果啟用壓縮,是否在響應報文首部插入“Vary: Accept-Encoding

具體使用:
server {
        location /test3/ {
        gzip on;
        gzip_comp_level 6;
        gzip_min_length 100;
        gzip_types text/xml text/css text/plain application/javascript;
    }
}

測試:
172.20.23.33:44018 GET - 200 curl/7.29.0  200 436946 "-" -->壓縮前
172.20.23.33:44020 GET - 200 curl/7.29.0  200 3252 "134.86"-->壓縮後