1. 程式人生 > >nginx 配置語法

nginx 配置語法

一、語法規則: location [=|~|~*|^~] /uri/ { … }

  1. = 開頭表示精確匹配

  2. ^~ 開頭表示uri以某個常規字串開頭,理解為匹配 url路徑即可。nginx不對url做編碼,因此請求為/static/20%/aa,可以被規則^~ /static/ /aa匹配到(注意是空格)。

  3. ~ 開頭表示區分大小寫的正則匹配

  4. ~* 開頭表示不區分大小寫的正則匹配

  5. !~!~*分別為區分大小寫不匹配及不區分大小寫不匹配 的正則

  6. / 通用匹配,任何請求都會匹配到。

多個location配置的情況下匹配順序按:首先匹配 =,其次匹配^~, 其次是按檔案中順序的正則匹配,最後是交給 / 通用匹配。當有匹配成功時候,停止匹配,按當前匹配規則處理請求。

二、ReWrite語法

last – 基本上都用這個Flag。
break – 中止Rewirte,不在繼續匹配
redirect – 返回臨時重定向的HTTP狀態302
permanent – 返回永久重定向的HTTP狀態301

三、Redirect語法

server {
    listen 80;
    server_name xx.xx.cn;
    index index.html index.php;
    root html;
    if ($http_host !~ "^star\.igrow\.cn$" {
        rewrite ^(.*) http://xx.xx.cn$1 redirect;
    }
}

四、防盜鏈

location ~* \.(gif|jpg|swf)$ {
    valid_referers none blocked start.igrow.cn sta.igrow.cn;
    if ($invalid_referer) {
        rewrite ^/ http://$host/logo.png;
    }
}

五、根據檔案型別設定過期時間

location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {
    if (-f $request_filename) {
        expires 1h;
        break;
    }
}

六、禁止訪問某個目錄

location ~* \.(txt|doc)${
  root /data/xx;
  deny all;
}