nginx配置文件

# nginx.conf文件示例
user nobody; worker_processes 8; error_log varlog/nginx/error.log error; #pid logs/nginx.pid events { use epoll; worker_connections 50000; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr [$time_local] "$request" '; access_log logs/access.log main buffer=32k; ... }

全部的事件類配置都要在events中nginx

events {...web

}正則表達式

http {服務器

  upstream backend {網絡

    server 127.0.0.1:8080;app

  }優化

  gzip on;spa

  server {debug

      ...日誌

      location  /webstatic {

            gzip off;

            }

  }

}

 

塊配置項能夠嵌套。內層塊 直接繼承外層塊 ,當發生衝突時,之內層爲準,如上面的gzip 在外層爲 on ,到location內層時 gzip爲off 

塊配置項由一個塊配置項名和一對大括號組成

基本的配置項語法格式爲:

配置項名 配置項值1 配置項值2 ...;

在行首的是配置名,這些配置名必須是nginx的某一個模塊須要處理的,不然nginx會認爲配置文件出現裏非法配置名

配置項名結束後以空格做爲分隔符

配置項值能夠是數字,字符串,正則表達式,能夠只有一個值或多個值, 每行配置的結尾須要加上分號

若是配置項值中包括語法符號如空格,須要使用單/雙 引號括住配置項值

 

nginx.conf中的註釋以 #開頭

 

配置項的單位

指定空間大小時可以使用 :          K/k     表示KB       M/m    表示 MB

時間單位可以使用:     ms(毫秒)    s(秒)   m(分鐘)   h(小時)  d(天)    w(周,7天)  M(月,30天)   y(年,365天) 

 

配置項中使用變量(只有某些模塊支持這種 使用變量的寫法)

log_format  main  '$remote_addr- $remote_user  [$time_local]  "$request" ' ;

上例中 $remote_addr表示一個變量 remote_addr 

 

nginx服務的基本配置

daemon on|off;                                      默認 daemon on; 設置nginx是否以守護進程(脫離終端在後臺運行的進程)方式運行

master_process on|off;                        默認master_process on;   生產環境中nginx都是以一個master進程管理多個worker進程的方式運行;

                  若是關閉 ,則不會fork出worker子進程,而是master進程自身來處理請求

error_log pathfile level ;                     默認爲 logs/error.log error; 設置nginx  err日誌的位置與等級 ,級別有debug,info,notice,warn error,crit,alert,emerg

 debug_connection[IP|CIDR]               改配置屬於事件配置,必須放在events{...}中才有效,能夠是ip地址或cidr地址。需確保編譯執行congfigure時是使用了--with-debug參數。

events {

    debug_connection 10.224.66.14;

    debug_connection 10.224.57.0/24;

}

這樣只有來自上面IP地址的請求才會輸出debug級別的日誌,其餘請求仍然沿用error_log中配置的日誌級別

 

worker_rlimit_core size;                    限制core dump核心轉儲文件的大小

working_directory  path;                    worker進程的工做目錄,用於設置coredump文件的存儲目錄,需確保worker進程有權限向working_directory指定的目錄寫入文件

 

include pathfile;                                 導入其餘配置文件中的配置 ,pathfile能夠是絕對路徑 也能夠是相對路徑(相對於nginx.conf所在的目錄)如

include mime.types;

include vhost/*.conf;

參數值能夠是一個明確的文件名,也能夠是含有通配符*的文件名,同時能夠一次嵌入多個配置文件

 

pid  pathfile;                                       默認pid logs/nginx.pid;     需確保nginx有權在相應的目標中建立pid文件

user username[ groupname];                默認 user nobody nobody;  設置master進程啓動後,fork出的worker進程運行在哪一個用戶和用戶組下,不設置用戶組時,用戶組與用戶名相同

 

worker_processes number;                  默認worker_processes 1 ;在master/worker運行方式下,定義worker進程的個數

 

use [ kqueue|rtsig|epoll|/dev/poll|select|poll|eventport];          默認nginx會自動使用最合適的事件模型

 

worker_connections number;               定義每一個worker進程能夠同時處理的最大鏈接數

 

 

靜態web服務器

一個典型的靜態web服務器還會包含多個server塊和location塊

 

http {
        gzip on;
        upstream {
                ...
         }
         ...
       
        server {
                    listen localhost:80;
                    ...
                    location /webstatic {
                                  if ...
                                      {
                                        ...
                                  }
                                  root opt/web/resource;
                                  ...
                     }
                     location ~* .(jpg|jpeg|png|jpe|gif)$ {
                                                                              ...
                     }
       }
       server {
                  ...
       }
}

 

 

 

全部的http配置項都必須直屬於 http塊,server塊,location塊,upstream塊或 if塊等

有些配置項能夠任意地出如今某一個塊中,有些配置項只能出如今特定的塊中。

靜態的web服務器提供了許多功能: 虛擬主機與請求的分發,文件路徑的定義,內存及磁盤資源的分配,網絡鏈接的設置,MIME類型設置,客戶端請求的限制,文件操做的優化,客戶端請求的特殊處理。

 

虛擬主機與請求的分發

  一般存在多個主機域名對應同一個IP地址,每一個server塊就是一個虛擬機,它只處理與之相對應的主機域名請求

這樣一臺服務器上的nginx就能以不一樣的方式處理訪問不一樣主機域名的http請求了

server{

    listen address:port 

默認爲listen 80;         listen參數決定nginx如何監聽端口,在listen後能夠只加IP地址,端口或主機名 

例:

listen 127.0.0.1:8000;

listen 127.0.0.1; 

listen 8000;

listen *:8000;

listen localhost:8000;

若是是IPV6地址,能夠寫成

listen [::]:8000;

listen [fe80::1];

listen [:::a8c9:1234]:80;

 

地址和端口後還能夠加上其餘參數,如:

listen 43 default_serer ssl;

listen 127.0.0.1 default_server accept_filter=dataready backlog=1024;

 

default/default_server  :將所在server塊做爲整個web服務的默認server塊,若是沒有設置,則以第一個server塊爲默認server塊。

            沒法匹配配置文件中的任何主機域名的請求,會由默認server處理

相關文章
相關標籤/搜索