1. 程式人生 > >Nginx系列--02基本配置

Nginx系列--02基本配置

root proc ges user 必備 htm work acc alt

一. 配置文件結構

1. Nginx配置目錄

YUM安裝的Nginx其配置文件目錄為/etc/nginx。Nginx的主配置文件為/etc/nginx/nginx.conf,在主配置文件中通過include 包含/etc/nginx/conf.d/*.conf所有配置。在配置目錄下有fastcgi, uwsgi,scgi等協議相關的配置文件,以及支持的Mime類型。

2. 配置文件中指令配置

配置格式:directive value [ value... ]
註意:(1)指令一定要以分號結尾。(2)支持使用變量,一種是模塊引入的內建變量;一種是自定義變量,使用 set var_name value 定義,使用$var_name 調用。

3. 主配置文件結構

Nginx的配置是分段的,對應指令只能放在對應的配置段中,否則就會報錯。

main block:主配置段,也即全局配置段;
event {
    ...
}:事件驅動相關的配置;
http {
    ...
}:http/https 協議相關的配置段;
mail {
    ...
}:用於配置imap4/pop3協議的反向代理
stream {
    ...
}:用於配置TCP/UDP的請求轉發

4. HTTP協議相關的配置

http {
    ...
    ...:各server的公共配置
    server {
        ...
    }:每個server用於定義一個虛擬主機;
    server {
        ...
        server_name 
        root
        alias
        location [OPERATOR] URL {
            ...
            if CONDITION {
                ...
            }
        }
    }
}

二. 配置詳解

1. main段配置指令

正常運行必備指令

(1)user

    語法:user user_name [group]
    默認:user nobody nobody
    上下文:main

指定了work進程運行時使用的用戶,如果group省略同user。需要註意的是,worker進程運行的身份決定了他們是否能夠寫入某些目錄,nginx緩存目錄/var/cache/nginx,日誌目錄/var/log/nginx,默認站點目錄/usr/share/nignx/html,這些目錄的屬主和屬組都是root,有可能導致沒有權限,需要我們修改權限。

(2)pid
指定存儲nginx主進程號碼的文件路徑,nginx的主進程是一個會話進程,所以只要殺死主進程,工作進程也會down掉,所以我們關掉nginx只需要kill掉保存在此文件中的pid對應的進程即可。需要註意的是只要我們主進程不down,工作線程down了,主線程會重啟一個work進程。YUM安裝中PID的配置為/var/run/nginx.pid。

技術分享圖片

(3)include file;
指明包含進來的其它配置文件片斷,可以放在任何配置段中。

__(4)load_module__ file;
指明要裝載的動態模塊

性能優化相關的配置

__(1)worker_processes__ number | auto;
worker進程的數量;通常應該為當前主機的cpu的物理核心數,或者為物理核心數減一。auto表明是物理核心數.
技術分享圖片

(2)worker_cpu_affinity cpumask ...;
cpumask的使用為: 00000001 如果有八顆CPU,表明一worker進程會運行在第零顆CPU上。00000010:表明第一顆CPU依次類推。
測試:
不綁定CPU
技術分享圖片
綁定CPU
技術分享圖片

__(3)worker_priority__ number;
指定worker進程的nice值,值越小優先級越高,範圍為[-20,20]
技術分享圖片

(4)worker_rlimit_nofile number;
單個worker進程打開文件數量上限。在CentOS上非管理員賬號只能使用1024個文件。而Linux哲學思想一切皆文件,每一個socket就是一個文件,所以此值往往需要調大。

事件驅動相關的配置:

events {
...
}

__(1)worker_connections__ number;
每個worker進程能夠打開的最大並發連接數。
nginx最大並發數=worker_processes * worker_connections

(2)use method;
指明並發連接請求的處理方法;默認使用epoll,使用nginx作為web服務器,如果不使用此命令有意義嗎?

__(3)accept_mutex__ on | off
處理新請求的方法,on表示worker進程輪流處理,off則會通知所有的worker進程,誰搶到誰處理。

說明

本篇梳理了nginx mian段的配置指令,接下來的一篇將會梳理http段的基本配置、基於IP和端口虛擬主機,以及混合型虛擬主機。

Nginx系列--02基本配置