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.conf | bbs.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配置文件簡介及多域名虛擬主機配置