在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Linux/ Nginx 的配置系統(tǒng)
示例: hello handler 模塊
什么是 Nginx
handler 模塊的掛載
Nginx 特點
handler 模塊簡介
初探 Nginx 架構(gòu)
Nginx 的模塊化體系結(jié)構(gòu)
更多 handler 模塊示例分析
Nginx 基礎(chǔ)概念
upstream 模塊簡介
Nginx 的請求處理
過濾模塊簡介
基本數(shù)據(jù)結(jié)構(gòu)
模塊的基本結(jié)構(gòu)
負載均衡模塊
過濾模塊的分析
core 模塊
handler 模塊的基本結(jié)構(gòu)
Nginx 的配置系統(tǒng)
handler 的編寫步驟
handler 模塊的編譯和使用
event 模塊

Nginx 的配置系統(tǒng)

Nginx 的配置系統(tǒng)由一個主配置文件和其他一些輔助的配置文件構(gòu)成。這些配置文件均是純文本文件,全部位于Nginx 安裝目錄下的 conf 目錄下。

配置文件中以#開始的行,或者是前面有若干空格或者 TAB,然后再跟#的行,都被認為是注釋,也就是只對編輯查看文件的用戶有意義,程序在讀取這些注釋行的時候,其實際的內(nèi)容是被忽略的。

由于除主配置文件 nginx.conf 以外的文件都是在某些情況下才使用的,而只有主配置文件是在任何情況下都被使用的。所以在這里我們就以主配置文件為例,來解釋 Nginx 的配置系統(tǒng)。

在 nginx.conf 中,包含若干配置項。每個配置項由配置指令和指令參數(shù) 2 個部分構(gòu)成。指令參數(shù)也就是配置指令對應(yīng)的配置值。

指令概述

配置指令是一個字符串,可以用單引號或者雙引號括起來,也可以不括。但是如果配置指令包含空格,一定要引起來。

指令參數(shù)

指令的參數(shù)使用一個或者多個空格或者 TAB 字符與指令分開。指令的參數(shù)有一個或者多個 TOKEN 串組成。TOKEN 串之間由空格或者 TAB 鍵分隔。

TOKEN 串分為簡單字符串或者是復(fù)合配置塊。復(fù)合配置塊即是由大括號括起來的一堆內(nèi)容。一個復(fù)合配置塊中可能包含若干其他的配置指令。

如果一個配置指令的參數(shù)全部由簡單字符串構(gòu)成,也就是不包含復(fù)合配置塊,那么我們就說這個配置指令是一個簡單配置項,否則稱之為復(fù)雜配置項。例如下面這個是一個簡單配置項:

    error_page   500 502 503 504  /50x.html;

對于簡單配置,配置項的結(jié)尾使用分號結(jié)束。對于復(fù)雜配置項,包含多個 TOKEN 串的,一般都是簡單 TOKEN 串放在前面,復(fù)合配置塊一般位于最后,而且其結(jié)尾,并不需要再添加分號。例如下面這個復(fù)雜配置項:

        location / {
            root   /home/jizhao/nginx-book/build/html;
            index  index.html index.htm;
        }

指令上下文

nginx.conf 中的配置信息,根據(jù)其邏輯上的意義,對它們進行了分類,也就是分成了多個作用域,或者稱之為配置指令上下文。不同的作用域含有一個或者多個配置項。

當(dāng)前 Nginx 支持的幾個指令上下文:

  • main: Nginx 在運行時與具體業(yè)務(wù)功能(比如http服務(wù)或者email服務(wù)代理)無關(guān)的一些參數(shù),比如工作進程數(shù),運行的身份等。
  • http: 與提供 http 服務(wù)相關(guān)的一些配置參數(shù)。例如:是否使用 keepalive 啊,是否使用gzip進行壓縮等。
  • server: http 服務(wù)上支持若干虛擬主機。每個虛擬主機一個對應(yīng)的 server 配置項,配置項里面包含該虛擬主機相關(guān)的配置。在提供 mail 服務(wù)的代理時,也可以建立若干 server,每個 server 通過監(jiān)聽的地址來區(qū)分。
  • location: http 服務(wù)中,某些特定的URL對應(yīng)的一系列配置項。
  • mail: 實現(xiàn) email 相關(guān)的 SMTP/IMAP/POP3 代理時,共享的一些配置項(因為可能實現(xiàn)多個代理,工作在多個監(jiān)聽地址上)。

指令上下文,可能有包含的情況出現(xiàn)。例如:通常 http 上下文和 mail 上下文一定是出現(xiàn)在 main 上下文里的。在一個上下文里,可能包含另外一種類型的上下文多次。例如:如果 http 服務(wù),支持了多個虛擬主機,那么在 http 上下文里,就會出現(xiàn)多個 server 上下文。

我們來看一個示例配置:

    user  nobody;
    worker_processes  1;
    error_log  logs/error.log  info;

    events {
        worker_connections  1024;
    }

    http {  
        server {  
            listen          80;  
            server_name     www.linuxidc.com;  
            access_log      logs/linuxidc.access.log main;  
            location / {  
                index index.html;  
                root  /var/www/linuxidc.com/htdocs;  
            }  
        }  

        server {  
            listen          80;  
            server_name     www.Androidj.com;  
            access_log      logs/androidj.access.log main;  
            location / {  
                index index.html;  
                root  /var/www/androidj.com/htdocs;  
            }  
        }  
    }

    mail {
        auth_http  127.0.0.1:80/auth.php;
        pop3_capabilities  "TOP"  "USER";
        imap_capabilities  "IMAP4rev1"  "UIDPLUS";

        server {
            listen     110;
            protocol   pop3;
            proxy      on;
        }
        server {
            listen      25;
            protocol    smtp;
            proxy       on;
            smtp_auth   login plain;
            xclient     off;
        }
    }

在這個配置中,上面提到個五種配置指令上下文都存在。

存在于 main 上下文中的配置指令如下:

  • user
  • worker_processes
  • error_log
  • events
  • http
  • mail

存在于 http 上下文中的指令如下:

  • server

存在于 mail 上下文中的指令如下:

  • server
  • auth_http
  • imap_capabilities

存在于 server 上下文中的配置指令如下:

  • listen
  • server_name
  • access_log
  • location
  • protocol
  • proxy
  • smtp_auth
  • xclient

存在于 location 上下文中的指令如下:

  • index
  • root

當(dāng)然,這里只是一些示例。具體有哪些配置指令,以及這些配置指令可以出現(xiàn)在什么樣的上下文中,需要參考 Nginx 的使用文檔。