1. 程式人生 > >Nginx配置文件簡介及多域名虛擬主機配置

Nginx配置文件簡介及多域名虛擬主機配置

Nginx;CentOS

1.Nginx的功能模塊

Nginx軟件的強大是由於它具有眾多的功能模塊,下面列出企業中常用的重要模塊。

(1)Nginx核心功能模塊(Core functionality)

Nginx核心功能模塊負責Nginx的全局應用,主要對應主配置文件的Main區塊和Event區塊區域,這裏有很多的Nginx必須的全局參數配置。

(2)標準的http功能模塊集合

這些標準的http功能模塊,雖然不是Nginx軟件所需,但是都是很常用的,因此絕大部分都默認安裝到Nginx軟件中,不建議擅自改動,保留軟件的默認設置就好,除非你明確知道你要做什麽,有什麽影響。這些模塊包括像:ngx_http_core_module,ngx_http_access_module,ngx_http_gzip_module,ngx_http_upstream_module,ngx_http_proxy_module,ngx_http_log_module模塊等等,具體的說明可以自行百度或者到官網查詢。

2.Nginx的目錄說明

技術分享圖片

其中conf的配置文件較多,最為重要的是nginx.conf的文件,這是nginx的主配置文件。帶有default的文件都是備份文件。

3.Nginx的主配置文件

Nginx的配置文件是一個純文本文件,它一般位於Nginx安裝目錄的conf目錄下,整個配置文件是以block的形式組織的。每個block一般以一個大括號“{ }”來表示,block可以分為幾個層次,整個配置文件中Main指令位於最高層,在Main層下面可以有Events、HTTP等層級,而在HTTP層中又包含有Server層,即server block,server block中又可分為location層,並且一個server block中可以包含多個location block。


一個完整的配置文件結構如下圖所示。

技術分享圖片

Nginx配置文件註釋:

worker_processes  1;    #worker進程的數量
events {                #事件塊的開始
    worker_connections  1024;            #每個worker進程支持的最大連接數
}                       #事件塊的結束
http {                  #HTTP區塊的開始
    include       mime.types;                #Nginx支持媒體類型庫文件
    default_type  application/octet-stream;    #默認的媒體類型
    sendfile        on;                        #開啟高速傳輸模式
    keepalive_timeout  65;                     #連接超時
    server {                                    #第一個server區塊的開始
        listen       80;                        #提供服務的端口,默認為80
        server_name  localhost;                 #提供服務的域名主機
        location / {                            #第一個location區塊的開始
            root   html;                        #站點的根目錄,相當於Nginx的安裝目錄
            index  index.html index.htm;        #默認的首頁文件,多個使用空格隔開
        }                                        #第一個location區塊的結束
        error_page   500 502 503 504  /50x.html;    #出現對應的http狀態碼是,使用50x.html回應客戶
        location = /50x.html {                    #location區塊的開始,訪問50x.html
            root   html;                            #指定對應的站點目錄為html
        }
    }
}                                                   #HTTP區塊的結束

4、虛擬主機的概念及配置

虛擬主機,在web服務裏面就是一個獨立的網站站點啊,這個站點對應獨立的域名(也可以是IP或者端口),具有獨立的程序和資源目錄,可以獨立地對外提供服務供用戶訪問。這個獨立的站點在配置裏是由一定格式的標簽段標記的,對於Apache軟件來說,一個虛擬主機的標簽通常包含在<VirtualHost></VirtualHost>裏面,而Nginx則是用server{}標簽來標識一個虛擬主機。一個web服務可以有多個虛擬主機的標簽對,即可以同時支持多個虛擬主機站點。

虛擬主機主要包含有三種類型,一是基於域名的虛擬主機,二是基於端口的虛擬主機還有就是基於IP的虛擬主機。最為常見的是基於域名和端口的,下面我們以基於域名的為例講解如何配置虛擬主機。本次實驗會配置兩個虛擬主機,分別是www.pcm.com以及bbs.pcm.com。

(1)在html目錄下新建虛擬主機的目錄www和bbs,並寫入首頁文件。

mkdir /usr/local/nginx/html/www/
mkdir /usr/local/nginx/html/bbs/
echo "這是www站點,IP地址為:192.168.31.10" >> /usr/local/nginx/html/www/index.html
cho "這是bbs站點,IP地址為:192.168.31.10" >> /usr/local/nginx/html/bbs/index.html

(2)修改nginx.conf配置文件,在conf目錄下新建extra目錄用來放置www和bbs的配置文件。

cd /usr/local/nginx/conf        
egrep -v "#|^$" nginx.conf.default >nginx.conf    #不要註釋和空行的nginx的配置文件

修改之後的配置文件如下所示,刪除了server區塊,把server區塊寫入到extra目錄對應的文件裏面,用include引用這些配置文件。

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
	include extra/www.conf;    #這樣可以直接引用 
	include extra/bbs.conf;
}

(3)在conf目錄下新建目錄extra,然後在該目錄下新建 www.conf以及bbs.conf兩個文件

mkdir extra
touch extra/www.conf
touch extra/bbs.conf

這兩個文件的配置如下

www.confbbs.conf

server {

listen 80;

server_name www.pcm.com;

location / {

root html/www;

index index.html index.htm;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

server {

listen 80;

server_name bbs.pcm.com;

location / {

root html/bbs;

index index.html index.htm;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

(4)修改hosts文件,增加對域名www.pcm.com和bbs.pcm.com的解析,這樣我們可以直接在本機上做測試了。

echo "192.168.31.10   www.pcm.com bbs.pcm.com cms.pcm.com blog.pcm.com" >>/etc/hosts

(5)檢查nginx.conf文件有沒有語法問題,沒有的話重新加載nginx。

/usr/local/nginx/sbin/nginx -t

技術分享圖片

/usr/local/nginx/sbin/nginx -s reload    #重新加載配置文件,平滑重啟,不建議用restart重啟

(6)本機上,用curl測試。

技術分享圖片技術分享圖片

(7)在windows主機上做測試(可選)

打開winows的hosts文件,增加這兩行,文件所在路徑是:C:\Windows\System32\drivers\etc

技術分享圖片

然後用瀏覽器輸入網址驗證,到這裏,nginx的虛擬主機配置成功。

技術分享圖片

技術分享圖片


Nginx配置文件簡介及多域名虛擬主機配置