nginx.conf详解
user nobody # 运行子进程的用户
workprocess auto; # 根据CPU个数
error_log /data/wwwlogs/nginx_error.log;
pid /data/wwwlogs/nginx.pid
events {
workconntion 65535; # nginx 配置优化 单进程读取文件数量
use epoll; #io非堵塞
}
http {
tcp_nopush on;
tcp_nodelay on;
# 优化网络连接
keepalive_timeout 120;
# 检查超时时间 内核参数优化 timeout < 120;
server_tokens off;
charset utf-8;
# 设置字符集
#Gzip Compression
gzip on;
# 文件压缩,节省流量,提升网站访问速度
## 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/; #项目路径
}
#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 为了网站安全性
location ~ ^/(\.user.ini|\.ht|\.git|\.svn|\.project|LICENSE|README.md) {
deny all; # 禁止访问
}
变量 | 说明 | 变量 | 说明 |
---|---|---|---|
$args | 这个变量等于请求行中的参数,同$query_string | $remote_port | 客户端的端口。 |
$content_length | 请求头中的Content-length字段。 | $remote_user | 已经经过Auth Basic Module验证的用户名。 |
$content_type | 请求头中的Content-Type字段。 | $request_filename | 当前请求的文件路径,由root或alias指令与URI请求生成。 |
$document_root | 当前请求在root指令中指定的值。 | $scheme | HTTP方法(如http,https)。 |
$host | 请求主机头字段,否则为服务器名称。 | $server_protocol | 请求使用的协议,通常是HTTP/1.0或HTTP/1.1。 |
$http_user_agent | 客户端agent信息 | $server_addr | 服务器地址,在完成一次系统调用后可以确定这个值。 |
$http_cookie | 客户端cookie信息 | $server_name | 服务器名称。 |
$limit_rate | 这个变量可以限制连接速率。 | $server_port | 请求到达服务器的端口号。 |
$request_method | 客户端请求的动作,通常为GET或POST。 | $request_uri | 包含请求参数的原始URI,不包含主机名,如:/foo/bar.php?arg=baz。 |
$remote_addr | 客户端的IP地址。 | $uri | 不带请求参数的当前URI,$uri不包含主机名,如/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上次启动以来工作状态的统计的结果。
如 下图:
2)返回各数据项说明:
Active connections
: 当前nginx正在处理的活动连接数.
Server accepts handled requests request_time
: nginx总共处理了13057 个连接,成功创建13057 握手(证明中间没有失败的),总共处理了11634 个请求,总共请求时间2230854。
Reading
: nginx读取到客户端的Header信息数.
Writing
: nginx返回给客户端的Header信息数.
Waiting
: 开启keep-alive的情况下,这个值等于 active – (reading + writing),意思就是nginx已经处理完成,正在等候下一次请求指令的驻留连接。
所以,在访问效率高,请求很快被处理完毕的情况下,Waiting数比较多是正常的.
如果reading +writing数较多,则说明并发访问量非常大,正在处理过程中
logstash
常用的nginx全局变量
nginx全局变量
$http_host始终等于HTTP_HOST请求标题。
$host等于$http_host,小写并且没有端口号(如果存在),除非HTTP_HOST不存在或是空值。
在这种情况下,$host等于server_name处理请求的服务器的指令值。
HTTP_HOST:从客户端请求获得的HTTP请求标头中获取
server_addr: request请求到达的server的ip
server_port: request到达的服务器的端口
server_name: 请求到达server的名
content_type: 等同于请求头部的"Content_Type"的值
remote_addr: 客户端ip
remote_port:客户端端口
remote_user:客户端user
args 此变量与请求行中的参数相等 等于query_string
request_filename: 当前请求的文件的路径
request_url: 含有参数的完整初始URL
url: 不带请求参数的当前URI,$uri不包含主机名,如/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
结合的,适应nginx
的版本
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。