nginx配置

  已經接觸nginx有至關一段時間,對nginx的各個模塊配置都有必定的瞭解,但從未具體的進行整理,每次用時都須要去查找相關資料,所以開此篇進行具體彙總下nginx的相關使用配置以及遇到的問題php

  1、nginx配置文件簡介:css

  nginx配置文件主要分爲5個模塊:一、全局塊,二、event塊,三、http塊,四、server快,五、location塊。以下所示:html

 

;全局塊
events {
    ...
}

http {
    server {
        location {
             .... 
        }
         location {
             ....
        }
    }

     server {
        location {
             ....
        }
         location {
             ....
        }
    }
}
    

 一、1:全局塊相關配置:nginx

         配置運行nginx的用戶,只有被設置的用戶和用戶組成員才能夠操做nginx,nginx默認用戶和用戶組爲nobody(所有用戶均可以操做)。配置信息以下正則表達式

         user       nginx後端

         group     nginxtomcat

        配置nginx的worker_process數:服務器

        worker_processes    number|auto;      //number nginx可最多產生的worker_process數   auto,nginx自動檢測網絡

        配置nginx的pid存放路徑:app

        pid  file;         //file pid存放路徑    

        配置錯誤日誌的路徑:

        error_log    file| stderr[ debug | info | notice | warn | error | crit | alert | emerg ];   //錯誤日誌路徑 

        error_log  /tmp/logs/nginx_error.log error

一、2:events配置:

        設置是否能夠同時接收多個網絡鏈接

        multi_accept on|off

        設置事件驅動模型的選擇

        use method | [select, poll, epoll, kqueue,eventport等]

   配置最大連接數

        worker_connections number //每一個worker process同時開啓的最大鏈接數

一、3:http配置:

        定義MIME-Type

     include mime-types;

        default_type application/octet-stream;

        配置access_log以及log_format

        access_log path   //path訪問日誌路徑

        log_format name  string  //string具體查看nginx示例

        配置sendfile方式傳輸文件

        sendfile on | off

        sendfile_max_chunk size;   //設置每次傳輸的數據的大小,不設置則表示無限制 , 例:sendfile_max_chunk_size 128k

     配置超時時間

        keepalive_timeout timeout

        keepalive_requests number //單鏈接請求上線,默認100

1.4 :server配置:

        配置網絡監聽:

     此處經過事例描述,以下:

        listen  ip:port;    監聽具體的ip和具體的端口

        listen   ip;    監聽具體的ip

        listen   port;       監聽端口上的全部ip,等同於listen *:8000

        虛擬主機配置:

        server_name   name name2 //name可以使用正則表達式,匹配優先級:①準確匹配 ②通配符在開始時匹配 ③通配符在結尾時匹配 ④正則表達式匹配成功    注:從nginx-0.0.40開始支持正則表達式字符串捕獲功能。例如:server_name ~^www\.(.+)\.com$;  ()中的將被捕獲並記錄到$1中,在server中可以使用$1來表示捕獲到的數據

        server_name ip;   //server_name支持基於ip配置虛擬主機

        root  path;   //path,根目錄

1.5 :location配置:

        location [ = | ~ | ~* | ^~ ] url {...}

        url表示待匹配的字符串,能夠包含正則表達式,不包含正則表達式的意味標準url

        []中的表示可選項;詳解以下:

        = ,用於標準url前,要求字符串與url嚴格匹配

        ~ ,用於表示url包含正則表達式,而且區分大小寫

        ~*,用於表示url包含正則表達式,而且不區分大小寫

        ^~,用於標磚url前,要求服務器找到的url和請求字符串的匹配度最高的location後,當即使用此location處理,而再也不使用location快中的正則url和請求字符串作匹配

        例如:   

首先匹配 =,其次匹配^~, 其次是按文件中順序的正則匹配,最後是交給 / 通用匹配。當有匹配成功時候,中止匹配,按當前匹配規則處理請求。
例子,有以下匹配規則:
location = / {
   #規則A
}
location = /login {
   #規則B
}
location ^~ /static/ {
   #規則C
}
location ~ \.(gif|jpg|png|js|css)$ {
   #規則D
}
location ~* \.png$ {
   #規則E
}
location !~ \.xhtml$ {
   #規則F
}
location !~* \.xhtml$ {
   #規則G
}
location / {
   #規則H
}
那麼產生的效果以下:
訪問根目錄/, 好比http://localhost/ 將匹配規則A
訪問 http://localhost/login 將匹配規則B,http://localhost/register 則匹配規則H
訪問 http://localhost/static/a.html 將匹配規則C
訪問 http://localhost/a.gif, http://localhost/b.jpg 將匹配規則D和規則E,可是規則D順序優先,規則E不起做用,而 http://localhost/static/c.png 則優先匹配到規則C
訪問 http://localhost/a.PNG 則匹配規則E,而不會匹配規則D,由於規則E不區分大小寫。
訪問 http://localhost/a.xhtml 不會匹配規則F和規則G,http://localhost/a.XHTML不會匹配規則G,由於不區分大小寫。規則F,規則G屬於排除法,符合匹配規則可是不會匹配到,因此想一想看實際應用中哪裏會用到。
訪問 http://localhost/category/id/1111 則最終匹配到規則H,由於以上規則都不匹配,這個時候應該是nginx轉發請求給後端應用服務器,好比FastCGI(php),tomcat(jsp),nginx做爲方向代理服務器存在。

 

 

        設置網站的默認首頁

        index index.$1.html  index.html  index.php;

        設置網站的錯誤頁面

        error_page code [response] url      //code錯誤碼   response 重定義的錯誤碼   url,錯誤頁面的路徑和網站地址

相關文章
相關標籤/搜索