nginx.conf詳解
user nobody # 運(yùn)行子進(jìn)程的用戶
workprocess auto; # 根據(jù)CPU個數(shù)
error_log /data/wwwlogs/nginx_error.log;
pid /data/wwwlogs/nginx.pid
events {
workconntion 65535; # nginx 配置優(yōu)化 單進(jìn)程讀取文件數(shù)量
use epoll; #io非堵塞
}
http {
tcp_nopush on;
tcp_nodelay on;
# 優(yōu)化網(wǎng)絡(luò)連接
keepalive_timeout 120;
# 檢查超時時間 內(nèi)核參數(shù)優(yōu)化 timeout < 120;
server_tokens off;
charset utf-8;
# 設(shè)置字符集
#Gzip Compression
gzip on;
# 文件壓縮壹士,節(jié)省流量刑然,提升網(wǎng)站訪問速度
## logformat
log_format access '$http_host $remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" '
'$request_time $upstream_response_time '
'"$http_x_forwarded_for"';
include vhost/django.conf;
include vhost/*.conf
}
server {
listen 80;
server_name blog.liuwenqi.com;
access_log /data/wwwlogs/access_nginx.log access;
root /data/wwwroot/myblog; # 資源目錄
index index.html index.htm index.php; # 首頁
#error_page 404 /404.html;
#error_page 502 /502.html;
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
location /static/ {
alias /data/wwwroot/myblog/static/;
}
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8997; #端口要和uwsgi里配置的一樣
uwsgi_param UWSGI_SCRIPT mysite.wsgi; #wsgi.py所在的目錄名+.wsgi
uwsgi_param UWSGI_CHDIR /data/wwwroot/myblog/; #項(xiàng)目路徑
}
#location ^~ /static/ {
# alias /data/wwwroot/myblog/static;
#}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
expires 1m;
access_log off;
}
location ~ .*\.(js|css)?$ {
expires 7d;
access_log off;
} # nginx是通過時間去判斷緩存過期
# .git .svn LICENSE 為了網(wǎng)站安全性
location ~ ^/(\.user.ini|\.ht|\.git|\.svn|\.project|LICENSE|README.md) {
deny all; # 禁止訪問
}
變量 | 說明 | 變量 | 說明 |
---|---|---|---|
$args | 這個變量等于請求行中的參數(shù)鲜漩,同$query_string | $remote_port | 客戶端的端口。 |
$content_length | 請求頭中的Content-length字段仅偎。 | $remote_user | 已經(jīng)經(jīng)過Auth Basic Module驗(yàn)證的用戶名黔宛。 |
$content_type | 請求頭中的Content-Type字段近刘。 | $request_filename | 當(dāng)前請求的文件路徑,由root或alias指令與URI請求生成。 |
$document_root | 當(dāng)前請求在root指令中指定的值觉渴。 | $scheme | HTTP方法(如http介劫,https)。 |
$host | 請求主機(jī)頭字段案淋,否則為服務(wù)器名稱座韵。 | $server_protocol | 請求使用的協(xié)議,通常是HTTP/1.0或HTTP/1.1踢京。 |
$http_user_agent | 客戶端agent信息 | $server_addr | 服務(wù)器地址誉碴,在完成一次系統(tǒng)調(diào)用后可以確定這個值。 |
$http_cookie | 客戶端cookie信息 | $server_name | 服務(wù)器名稱漱挚。 |
$limit_rate | 這個變量可以限制連接速率翔烁。 | $server_port | 請求到達(dá)服務(wù)器的端口號。 |
$request_method | 客戶端請求的動作旨涝,通常為GET或POST蹬屹。 | $request_uri | 包含請求參數(shù)的原始URI,不包含主機(jī)名白华,如:/foo/bar.php?arg=baz慨默。 |
$remote_addr | 客戶端的IP地址。 | $uri | 不帶請求參數(shù)的當(dāng)前URI弧腥,$uri不包含主機(jī)名厦取,如/foo/bar.html。 |
$document_uri | 與$uri相同管搪。 |
例如請求:http://localhost:3000/test1/test2/test.php
$host:localhost
$server_port:3000
$request_uri:/test1/test2/test.php
$document_uri:/test1/test2/test.php
$document_root:/var/www/html
$request_filename:/var/www/html/test1/test2/test.php
1)在瀏覽器中輸入 "域名/nginx_status" 就會顯示nginx上次啟動以來工作狀態(tài)的統(tǒng)計(jì)的結(jié)果虾攻。
如下圖:
2)返回各數(shù)據(jù)項(xiàng)說明:
Active connections
: 當(dāng)前nginx正在處理的活動連接數(shù).
Server accepts handled requests request_time
: nginx總共處理了13057 個連接,成功創(chuàng)建13057 握手(證明中間沒有失敗的),總共處理了11634 個請求,總共請求時間2230854。
Reading
: nginx讀取到客戶端的Header信息數(shù).
Writing
: nginx返回給客戶端的Header信息數(shù).
Waiting
: 開啟keep-alive的情況下,這個值等于 active – (reading + writing),意思就是nginx已經(jīng)處理完成,正在等候下一次請求指令的駐留連接更鲁。
所以,在訪問效率高,請求很快被處理完畢的情況下,Waiting數(shù)比較多是正常的.
如果reading +writing數(shù)較多,則說明并發(fā)訪問量非常大,正在處理過程中
logstash
常用的nginx全局變量
nginx全局變量
$http_host始終等于HTTP_HOST請求標(biāo)題霎箍。
$host等于$http_host,小寫并且沒有端口號(如果存在)澡为,除非HTTP_HOST不存在或是空值漂坏。
在這種情況下,$host等于server_name處理請求的服務(wù)器的指令值媒至。
HTTP_HOST:從客戶端請求獲得的HTTP請求標(biāo)頭中獲取
server_addr: request請求到達(dá)的server的ip
server_port: request到達(dá)的服務(wù)器的端口
server_name: 請求到達(dá)server的名
content_type: 等同于請求頭部的"Content_Type"的值
remote_addr: 客戶端ip
remote_port:客戶端端口
remote_user:客戶端user
args 此變量與請求行中的參數(shù)相等 等于query_string
request_filename: 當(dāng)前請求的文件的路徑
request_url: 含有參數(shù)的完整初始URL
url: 不帶請求參數(shù)的當(dāng)前URI顶别,$uri不包含主機(jī)名,如/foo/bar.html拒啰。
request_method: request的請求方法驯绎,通常為GET,POST
timestamp
input {
generator {
count => 1
message => "05:08:33.351UTC DEBUG c.emnify.esc.cmaprouter.MapSsnActor MapSsnActor(akka://esc) - create dialog request id=2767649"
}
}
filter {
grok {
match => ["message", "%{DATA:timestamp} .*"]
}
date {
match => ["timestamp", "HH:MM:ss.SSSZZZ"]
}
}
output {
stdout { codec => rubydebug }
}
輸出為:
{
"@version" => "1",
"host" => "Joaos-MBP-5.lan",
"sequence" => 0,
"@timestamp" => 2017-08-01T05:00:33.351Z,
"message" => "05:08:33.351UTC DEBUG c.emnify.esc.cmaprouter.MapSsnActor MapSsnActor(akka://esc) - create dialog request id=2767649",
"timestamp" => "05:08:33.351UTC"
}
OpenResty
OpenResty
是和Lua
結(jié)合的,適應(yīng)nginx
的版本
Lua 是一種輕量小巧的腳本語言谋旦,用標(biāo)準(zhǔn)C語言編寫并以源代碼形式開放剩失, 其設(shè)計(jì)目的是為了嵌入應(yīng)用程序中骗随,從而為應(yīng)用程序提供靈活的擴(kuò)展和定制功能。