美文网首页
Nginx要点

Nginx要点

作者: 魔曦帝天 | 来源:发表于2019-12-19 22:02 被阅读0次

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上次启动以来工作状态的统计的结果。
如下图:


image.png

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语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

Tengine

官方文档
下载地址

相关文章

网友评论

      本文标题:Nginx要点

      本文链接:https://www.haomeiwen.com/subject/sepenctx.html