利用include功能優化nginx的配置文件
-
[root@lnmp conf]# cat nginx.conf
-
worker_processes 1;
-
events {
-
worker_connections 1024;
-
}
-
http {
-
include mime.types;
-
default_type application/octet-stream;
-
sendfile on;
-
keepalive_timeout 65;
-
#nginx vhosts config
-
include extra/www.conf;
-
include extra/bbs.conf;
-
include extra/blog.conf;
-
}
寫配置文件 html
-
[root@lnmp conf]# mkdir extra
-
[root@lnmp conf]# sed -n '18,25p' nginx.conf.base-name >extra/bbs.conf
-
[root@lnmp conf]# cat extra/bbs.conf
-
server {
-
listen 80;
-
server_name bbs.etiantian.org;
-
location / {
-
root html/bbs;
-
index index.html index.htm;
-
}
-
}
-
[root@lnmp conf]# sed -n '26,33p' nginx.conf.base-name >extra/blog.conf
-
[root@lnmp conf]# cat extra/blog.conf
-
server {
-
listen 80;
-
server_name blog.etiantian.org;
-
location / {
-
root html/blog;
-
index index.html index.htm;
-
}
-
}
-
[root@lnmp conf]# cat extra/www.conf
-
server {
-
listen 80;
-
server_name www.etiantian.org;
-
location / {
-
root html/www;
-
index index.html index.htm;
-
}
-
}
重啓服務 前端
-
[root@lnmp conf]# /application/nginx/sbin/nginx -t
-
nginx: the configuration file /application/nginx-1.6.3/conf/nginx.conf syntax is ok
-
nginx: configuration file /application/nginx-1.6.3/conf/nginx.conf test is successful
-
[root@lnmp conf]# /application/nginx/sbin/nginx -s reload
測試 nginx
-
[root@lnmp conf]# curl www.etiantian.org
-
www.etiantian.org
-
[root@lnmp conf]# curl bbs.etiantian.org
-
bbs.etiantian.org
-
[root@lnmp conf]# curl blog.etiantian.org
-
blog.etiantian.org
nginx虛擬主機別名的配置
-
[root@lnmp conf]# cat extra/www.conf
-
server {
-
listen 80;
-
server_name www.etiantian.org etiantian.org;
-
location / {
-
root html/www;
-
index index.html index.htm;
-
}
-
}
-
[root@lnmp conf]# cat /etc/hosts
-
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
-
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
-
-
192.168.31.132 server
-
192.168.31.133 lamp
-
192.168.31.134 lnmp www.etiantian.org bbs.etiantian.org blog.etiantian.org etiantian.org
-
192.168.31.136 backup
-
[root@lnmp conf]# /application/nginx/sbin/nginx -t
-
nginx: the configuration file /application/nginx-1.6.3/conf/nginx.conf syntax is ok
-
nginx: configuration file /application/nginx-1.6.3/conf/nginx.conf test is successful
-
[root@lnmp conf]# /application/nginx/sbin/nginx -s reload
-
[root@lnmp conf]# curl etiantian.org
-
www.etiantian.org
-
[root@lnmp conf]# curl www.etiantian.org
-
www.etiantian.org
啓動報錯: web
-
[root@lnmp ~]# /application/nginx/sbin/nginx -s reload
-
nginx: [error] invalid PID number "" in "/application/nginx-1.6.3/logs/nginx.pid"
解決辦法: 瀏覽器
-
[root@lnmp ~]# /application/nginx/sbin/nginx -c /application/nginx/conf/nginx.conf
-
[root@lnmp ~]# /application/nginx/sbin/nginx -s reload
nginx狀態信息配置
-
[root@lnmp extra]# cat status.conf
-
#status
-
server{
-
listen 80;
-
server_name status.etiantian.org;
-
location / {
-
stub_status on;
-
access_log off;
-
}
-
-
}
添加包含 服務器
-
include extra/status.conf;
重啓nginx,瀏覽器訪問 app
第一個server表示nginx啓動到如今共處理了多少個鏈接。 dom
第二個accepts表示nginx啓動到如今共建立了多少次握手,請求丟失次數=(握手次數-鏈接次數)。 curl
第三個handled request表示總共處理了多少次請求。 工具
Reading:nginx讀取到客戶端的header信息數。
writing:nginx返回給客戶端的header信息素。
waiting:nginx已經處理完正在等候下一次請求指令的駐留鏈接,開啓keep-alive的狀況下,這個值等於active-(reading+writing)。
nginx錯誤日誌
常見的錯誤日誌級別有[debug|info|notice|warn|error|crit|alert|emerg],級別越高記錄的信息越少,生產場景通常是warm|error|crit這三個級別之一,注意不要配置info等級較低的級別,會帶來磁盤I/O消耗。
error_log的默認值爲:error_log logs/error.log error
-
[root@lnmp conf]# cat nginx.conf
-
worker_processes 1;
-
-
error_log logs/error.log error;
-
events {
-
worker_connections 1024;
-
}
-
http {
-
include mime.types;
-
default_type application/octet-stream;
-
sendfile on;
-
keepalive_timeout 65;
-
#nginx vhosts config
-
include extra/www.conf;
-
include extra/bbs.conf;
-
include extra/blog.conf;
-
}
能夠放置的標籤段爲:main,http,server,location。
訪問日誌
log_format:用來定義記錄日誌的格式(能夠定義多種日誌格式,取不一樣名字便可)。
access_log:用來指定日誌文件的路徑及使用的何種日誌格式記錄日誌。
-
[root@lnmp conf]# cat nginx.conf
-
worker_processes 1;
-
-
error_log logs/error.log error;
-
events {
-
worker_connections 1024;
-
}
-
http {
-
include mime.types;
-
default_type application/octet-stream;
-
sendfile on;
-
keepalive_timeout 65;
-
-
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
-
'$status $body_bytes_sent "$http_referer" '
-
'"$http_user_agent" "$http_x_forwarded_for"';
-
-
-
#nginx vhosts config
-
include extra/www.conf;
-
include extra/bbs.conf;
-
include extra/blog.conf;
-
}
$remote_addr:記錄訪問網站的客戶端地址。
$http_x_forwarded_for:當前端有代理服務器時,設置web節點記錄客戶端地址的配置,此參數生效的前提是代理服務器上也要進行相關的x_forwarded_for設置。
$remote_user:遠程客戶端用戶名稱。
$time_local:記錄訪問時間與時區。
$request:用戶的http請求起始行信息。
$status:http狀態碼,記錄請求返回的狀態,例如:200、40四、301等。
$body_bytes_sent:服務器發送給客戶端的響應body字節數。
$http_referer:記錄這次請求是從哪一個連接訪問過來的,能夠根據referer進行防盜鏈設置。
$http_user_agent:記錄客戶端訪問信息,例如:瀏覽器、手機客戶端等。
access_log off;這裏的off表示不記錄訪問日誌。
默認配置:access_log logs/access.log combined;
放置位置:http,server,location,if in location,limit_except。
-
[root@lnmp conf]# cat extra/www.conf
-
server {
-
listen 80;
-
server_name www.etiantian.org etiantian.org;
-
location / {
-
root html/www;
-
index index.html index.htm;
-
}
-
access_log logs/access_www.log main;
-
}
重啓nginx
-
[root@lnmp conf]# /application/nginx/sbin/nginx -t
-
nginx: the configuration file /application/nginx-1.6.3/conf/nginx.conf syntax is ok
-
nginx: configuration file /application/nginx-1.6.3/conf/nginx.conf test is successful
-
[root@lnmp conf]# /application/nginx/sbin/nginx -s reload
-
[root@lnmp conf]# tail -f ../logs/access_www.log #訪問日誌
-
192.168.31.1 - - [16/Feb/2017:23:35:38 +0800] "GET / HTTP/1.1" 200 18 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36" "-"
-
192.168.31.1 - - [16/Feb/2017:23:35:38 +0800] "GET /favicon.ico HTTP/1.1" 404 570 "http://www.etiantian.org/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36" "-"
日誌輪詢
-
[root@lnmp scripts]# cat cut_nginx_log.sh
-
#!/bin/sh
-
Dateformat=`date +%Y%m%d`
-
Basedir="/application/nginx"
-
Nginxlogdir="$Basedir/logs"
-
Logname="access_www"
-
[ -d $Nginxlogdir ] && cd $Nginxlogdir||exit 1
-
[ -f ${Logname}.log ]||exit 1
-
/bin/mv ${Logname}.log ${Dateformat}_${Logname}.log
-
$Basedir/sbin/nginx -s reload
執行
-
[root@lnmp scripts]# sh cut_nginx_log.sh
-
[root@lnmp scripts]# ll /application/nginx/logs/
-
total 24
-
-rw-r--r--. 1 root root 978 Feb 16 23:35 20170216_access_www.log
設置定時任務
-
#nginx log cut
-
00 00 * * * /bin/sh /server/scripts/cut_nginx_log.sh >/dev/null 2>&1
nginx經常使用日誌收集及分析工具備rsyslog、awstats、flume、ELK、storm等。
rewrite
rewrite指令語法
指令語法:rewrite regex replacement [flag];
默認值:none
應用位置:server,location,if。
-
[root@lnmp conf]# cat extra/www.conf
-
server {
-
listen 80;
-
server_name etiantian.org;
-
rewrite ^/(.*) http://www.etiantian.org/$1 permanent;
-
}
-
-
server {
-
listen 80;
-
server_name www.etiantian.org;
-
location / {
-
root html/www;
-
index index.html index.htm;
-
}
-
access_log logs/access_www.log main;
-
}
建立oldboy.html而後進行訪問
-
[root@lnmp www]# curl etiantian.org/oldboy.html -I
-
HTTP/1.1 301 Moved Permanently
-
Server: nginx/1.6.3
-
Date: Thu, 16 Feb 2017 16:30:47 GMT
-
Content-Type: text/html
-
Content-Length: 184
-
Connection: keep-alive
-
Location: http://www.etiantian.org/oldboy.html
rewrite指令最後一項參數flag標記說明
last:本條規則匹配完成後,繼續向下匹配新的location URI規則。
break:本條規則匹配完成即終止。再也不匹配後面的任何規則。
redirect:返回302臨時重定向,瀏覽器地址欄會顯示跳轉後的URL地址。
permanent:返回301永久重定向,瀏覽器地址欄會顯示後的URL地址。