一.配置文件優化之include參數html
若是咱們用nginx搭建虛擬主機,虛擬主機太多,咱們不能把全部配置放置在nginx.conf中吧?那樣這個配置文件就太大了,看起來很亂,全部這時就產生了
linux
include參數:nginx
你們若是瞭解apache軟件,就會知道apache主配置包含虛擬主機子文件的方法,其實nginx也借鑑了apache的這種包含方法web
nginx的主配置文件爲nginx.conf,主配置文件所包含的全部虛擬主機的子配置文件會統一放入extra(這個名字隨便起的)目錄中,虛擬主機的配置文件會按照網站的域名或者功能取名,例如www.conf bbs.conf blog.conf 等正則表達式
固然若是虛擬主機的數量不是不少,也能夠把多個虛擬主機配置成一個文件,僅僅和nginx的主配置文件nginx.conf分開便可apache
include實戰例子:
瀏覽器
修改nginx目錄格式以下:app
worker_processes 1;負載均衡
events {curl
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;
include extra/blog.conf;
}
或者上面三句話用一句話代替: include extra/*.conf;
這樣nginx的主配置文件就清爽好多了
在conf下先把extra目錄建出來
mkdir -p /app/zpy/nginx/conf/extra
編輯www.conf
server {
listen 80;
server_name www.vipdailiang.com;
location / {
root html/www;
index www.html;
}
}
編輯bbs.conf
server {
listen 80;
server_name bbs.vipdailiang.com;
location / {
root html/bbs;
index bbs.html;
}
}
blog.conf 原理同上
[html]# echo "bbs.vipdailiang.com" > bbs/bbs.html
[html]# echo "www.vipdailiang.com" > www/www.html
[html]# echo "blog.vipdailiang.com" > blog/blog.html
nginx配置文件檢查及從新加載
/app/zpy/nginx/sbin/nginx -t
/app/zpy/nginx/sbin/nginx -s reload
最後驗證:
[root@elkzabbix01 conf]#curl bbs.vipdailiang.com
bbs.vipdailiang.com
[root@elkzabbix01 conf]# curl blog.vipdailiang.com
blog.vipdailiang.com
[root@elkzabbix01 conf]# curl www.vipdailiang.com
二.nginx虛擬主機別名和rewrite重寫搞定跳轉需求
以前有一個印象很深的需求,領導要求在瀏覽器輸入zipeiyi.com可以自動跳轉到www.zipeiyi.com ,想了好久,開始無從下手,後來是用硬件負載均衡搞定的,其實nginx有兩種方式能夠搞定
1.虛擬主機別名配置很輕鬆的就能實現,下面咱們來看一下整個配置過程
所謂虛擬主機別名就是爲 虛擬主機設置除了主域名之外的一個或者多個域名
1)修改配置文件以下項:
server {
listen 80;
server_name www.vipdailiang.com vipdailiang.com;
location / {
root html/www;
index www.html;
}
}
2)而後本地測試環境仍是須要添加域名解析的
linux在/etc/hosts 裏添加
10.0.70.3 vipdailiang.com www.vipdailiang.com
3)最後進行測試
curl www.vipdailiang.com 看看返回結果 和 curl vipdailiang.com 返回結果是否同樣
[root@elkzabbix01 extra]# curl www.vipdailiang.com
www.vipdailiang.com
[root@elkzabbix01 extra]# curl vipdailiang.com
www.vipdailiang.com
結果是同樣同樣的
2.rewrite重寫功能
什麼是rewrite重寫功能
和apache等web服務軟件同樣,nginx的rewrite功能主要是實現URL地址重寫
nginx的rewrite功能須要PCRE軟件支持,即經過perl的正則表達式進行匹配,因此咱們開始編譯安裝nginx以前,都須要安裝PCRE軟件
rewrite的語法:
rewrite regex replacement [flag];
rewrite是實現URL重寫的關鍵指令,根據regex(正則表達式)部門的內容,重定義到replacement部分,結尾是flag標記,下面是一個簡單的URL rewrite跳轉的例子
server {
listen 80;
server_name vipdailiang.com;
rewrite ^/(.*) http://www.vipdailiang.com/$1 permanent;
}
server {
listen 80;
server_name www.vipdailiang.com ;
location / {
root html/www;
index www.html;
}
}
rewrite爲固定關鍵字,表示開啓了rewrite規則
regex(perl語言的正則表達式) ^/(.*) 表明匹配全部
$1 是取前面正則表達式的內容
結尾是permanent ,是永久301重定向的標記
效果就是你在瀏覽器輸入 vipdailiang.com 瀏覽器會自動跳轉到www.vipdailiang.com
rewrite功能在企業內用的很是普遍例如:
例子中所說的狀況
網站更換新域名後,讓舊域名的訪問跳轉到新域名上,例如讓 京東的360buy換成jd.com
三.nginx status模塊介紹
nginx軟件的功能模塊中有一個 ngx_http_sub_status_module模塊,這個模塊的主要功能是記錄nginx的基本訪問信息,讓使用者瞭解nginx的工做狀態,例如鏈接數等信息。因此在編譯nginx的時候須要增長這個模塊
可經過以下方式檢查編譯nginx的時候是否設定了上述模塊:
[root@elkzabbix01 /]# /app/zpy/nginx/sbin/nginx -V
nginx version: nginx/1.8.1
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --user=zpy --group=zpy --prefix=/app/zpy/nginx-1.8.1/ --with-http_stub_status_module --with-http_ssl_module
1.建立status.conf文件
[root@elkzabbix01 extra]# cat >>/app/zpy/nginx/conf/extra/status.conf<<EOF
##status
server{
listen 80;
server_name status.vipdailiang.com ;
location / {
stub_status on ;
access_log off ;
}
}
EOF
2.確保主配置文件裏nginx.conf裏面可以訪問到status.conf
include extra/*.conf;
4.添加解析
在/etc/hosts(linux) 添加 10.0.70.3 status.vipdailiang.com
在C:\Windows\System32\drivers\etc\hosts 添加 10.0.70.3 status.vipdailiang.com
5.檢查配置和從新加載配置文件
../sbin/nginx -t
../sbin/nginx -s reload
最後在瀏覽器輸入:
解釋下這段話的意思:
server 表示: 表示nginx啓動到如今一共處理了83個鏈接
accept 表示: 表示 nginx一共創建了 83次握手
請求丟失是 = 握手 -鏈接 =83(第二個)-83 =0 ,就是沒有丟失的請求
handled request表示: 一共處理了105次請求
writing爲nginx 返回給客戶端的header信息數
reading爲nginx 讀取到客戶端的header數
waiting爲 nginx已經處理完正在等候下一次請求指令的駐留鏈接。
在開啓keep-alive狀況下,這個值等於active-(reading+writing)
下一篇請看: nginx錯誤日誌、nginx訪問日誌、nginx訪問日誌的輪詢切割