centos 7, nginx install and nginx log format 調整


在centos 7下安裝nginx,可以透過先安裝epel-release,再進行的安裝的方式,當然,透過官方源的方式,還是可以用的
install nginx
yum install epel-release -y
yum install nginx -y

check nginx version,安裝完後檢視版本,我現在安好的版本是1.10.1
[root@localhost ~]# nginx -v
nginx version: nginx/1.10.1

nginx default access log,雖然的連線上,看到現在的log內容長下面這個樣子
[root@localhost nginx]# tail /var/log/nginx/access.log
10.0.2.2 - - [20/Nov/2016:22:16:57 +0800] “GET / HTTP/1.1” 200 3700 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36” “-”
10.0.2.2 - - [20/Nov/2016:22:16:57 +0800] “GET /nginx-logo.png HTTP/1.1” 200 368 “http://192.168.56.1:2280/” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36” “-”
10.0.2.2 - - [20/Nov/2016:22:16:57 +0800] “GET /poweredby.png HTTP/1.1” 200 2811 “http://192.168.56.1:2280/” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36” “-”
10.0.2.2 - - [20/Nov/2016:22:16:58 +0800] “GET /favicon.ico HTTP/1.1” 404 3650 “http://192.168.56.1:2280/” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36” “-“

check default logformat, in /etc/nginx/nginx.conf,在/etc/nginx/nginx.conf中檢示目前的log格式,這個格式會和上面的內容一對一對映 ,且字詞還滿簡單的,由字面意思可以大約猜出他的意義
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';
 access_log  /var/log/nginx/access.log  main;
所以
  • remote_addr > 是遠端IP
  • remote_user > 是遠端使用者,可以發現如果這個資料在沒有值是,nginx會寫 "-" 在裡面(如上資料藍色處) ,然後 "-"  (如上資料紅色處) 也是預設的資料分隔符號,這樣會搞的很亂,所以 log format第一個要改的部份,我會把資料分隔改成是逗號"," 
  • [$time_local] > 是本地格式時間,這部份我喜歡吃標準,所以會拿掉前面的中括號[],然後改成$time_iso8601 IOS時間格式
  • $request 用戶端對nginx使用的http 連線方法,對應到上邊看到是GET
  • $status nginx回傳給用戶的http 狀態碼,200 代表正常傳送網頁資料
  • $body_bytes_sent  > 傳送給用戶端的位元組
  • $http_referer > 用戶是透過那個網址連線到我們的nginx的,這個值可以拿來做防盗圖盗連
  • $http_user_agent > 用戶的瀏覽器
  • $http_x_forwarded_for > 經過代理器時,可以透過表用戶IP存放在這裡的動作,以便最後的伺服器可以得到真正的使用者IP

按自己的需求可以再拼出一個合宜的log_format,再取個名字,再指定access.log使用,示例如下

  • log_format myformat $remote_addr , $status , $body_bytes_send , $http_referer;
  • access_log /var/log/nginx/access.log myformat;


nginx官方還有一些log_format可以用的變數可供參考



留言

熱門文章