nginx 配置参数

时间:18-11-03 来源: 作者: 点击:

系统内核参数配置

net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 1800 

net.ipv4.ip_conntrack_max = 16777216 # 如果使用默认参数,容易出现网络丢包 

net.ipv4.netfilter.ip_conntrack_max = 16777216# 如果使用默认参数,容易出现网络丢包 

net.ipv4.tcp_max_syn_backlog = 65536 

net.core.netdev_max_backlog = 32768 

net.core.somaxconn = 32768 

net.core.wmem_default = 8388608 

net.core.rmem_default = 8388608 

net.core.rmem_max = 16777216 

net.core.wmem_max = 16777216 

net.ipv4.tcp_timestamps = 0 

net.ipv4.tcp_synack_retries = 2 

net.ipv4.tcp_syn_retries = 

net.ipv4.tcp_tw_recycle = 1 

net.ipv4.tcp_tw_reuse = 1 

net.ipv4.tcp_mem = 94500000 915000000 927000000 

net.ipv4.tcp_max_orphans = 3276800 

net.ipv4.ip_local_port_range = 1024 65535


location的配置选项及说明

语法规则: location [=|~|~*|^~] /uri/ { … } 

= 表示精确匹配,这个优先级也是最高的 

^~ 表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。 

~ 表示区分大小写的正则匹配 

~* 表示不区分大小写的正则匹配(和上面的唯一区别就是大小写) 

!~和!~*分别为区分大小写不匹配及不区分大小写不匹配的正则 

/ 通用匹配,任何请求都会匹配到,默认匹配. 

下面讲讲这些语法的一些规则和优先级 

多个location配置的情况下匹配顺序为(参考资料而来,还未实际验证,试试就知道了,不必拘泥,仅供参考):

优先级=>^~> 

首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。 例子,有如下匹配规则:


root&alias文件路径配置

root与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。

[root] 语法:root path 

默认值:root html 

配置段:http、server、location、if 

[alias] 语法:alias path 

配置段:location

location ~ ^/weblogs/ {

    root /path/to/weblogs/site.com;

    autoindex on;

    auth_basic "Restricted";

    auth_basic_user_file passwd/weblogs;

}

root会根据完整的URI来映射,就是/path/uri

location ^~ /binapp/ {

    limit_conn limit 4;

    limit_rate 200k;

    internal;

    alias /path/to/site/statics/bin/apps/;

}

alias会把location后面配置的路径丢弃掉,把当前匹配到的目录指向到指定的目录。

1. 使用alias时,目录名后面一定要加”/”。

2. alias可以指定任何名称。 

3. alias在使用正则匹配时,必须捕捉要匹配的内容并在指定的内容处使用。 

4. alias只能位于location块中



ngx_http_core_module模块的变量

$arg_PARAMETER     HTTP请求中某个参数的值,如/index.php?site=www.domain.com,可以用$arg_site取得 这个值。

$args HTTP 请求中的完整参数。例如,在请求/index.php?width=400&height=200 中,$args表示字符串width=400&height=200.

$binary_remote_addr 二进制格式的客户端地址。例如:\x0A\xE0B\x0E

$body_bytes_sent 表示在向客户端发送的http响应中,包体部分的字节数

$content_length 表示客户端请求头部中的Content-Length 字段

$content_type 表示客户端请求头部中的Content-Type 字段

$cookie_COOKIE 表示在客户端请求头部中的cookie 字段

$document_root 表示当前请求所使用的root 配置项的值

$uri 表示当前请求的URI,不带任何参数

$document_uri 与$uri 含义相同

$request_uri 表示客户端发来的原始请求URI,带完整的参数。$uri和$document_uri未必是用户的原始请求,在内部重定向后可能是重定向后的URI,而$request_uri 永远不会改变,始终是客户端的原始URI.

$host 表示客户端请求头部中的Host字段。如果Host字段不存在,则以实际处理的server(虚拟主机)名称代替。如果Host字段中带有端口,如IP:PORT,那么$host是去掉端口的,它的值为IP。$host 是全小写的。这些特性与http_HEADER中的http_host不同,http_host只取出Host头部对应的值。 

$hostname 表示 Nginx所在机器的名称,与 gethostbyname调用返回的值相同 

$http_HEADER 表示当前 HTTP请求中相应头部的值。HEADER名称全小写。例如,示请求中 Host头部对应的值 用 $http_host表 

$sent_http_HEADER 表示返回客户端的 HTTP响应中相应头部的值。HEADER名称全小写。例如,用 $sent_ http_content_type表示响应中 Content-Type头部对应的值 

$is_args 表示请求中的 URI是否带参数,如果带参数,$is_args值为 ?,如果不带参数,则是空字符串 

$limit_rate 表示当前连接的限速是多少,0表示无限速 

$nginx_version 表示当前 Nginx的版本号 

$query_string 请求 URI中的参数,与 $args相同,然而 $query_string是只读的不会改变 

$remote_addr 表示客户端的地址 

$remote_port 表示客户端连接使用的端口 

$remote_user 表示使用 Auth Basic Module时定义的用户名 

$request_filename 表示用户请求中的 URI经过 root或 alias转换后的文件路径 

$request_body 表示 HTTP请求中的包体,该参数只在 proxy_pass或 fastcgi_pass中有意义 

$request_body_file 表示 HTTP请求中的包体存储的临时文件名 

$request_completion 当请求已经全部完成时,其值为 “ok”。若没有完成,就要返回客户端,则其值为空字符串;或者在断点续传等情况下使用 HTTP range访问的并不是文件的最后一块,那么其值也是空字符串。

$request_method 表示 HTTP请求的方法名,如 GET、PUT、POST等 

$scheme 表示 HTTP scheme,如在请求 https://nginx.com/中表示 https 

$server_addr 表示服务器地址 

$server_name 表示服务器名称 

$server_port 表示服务器端口 

$server_protocol 表示服务器向客户端发送响应的协议,如 HTTP/1.1或 HTTP/1.0



日志配置

如access_log、log_format、open_log_file_cache、log_not_found、log_subrequest、rewrite_log、error_log。

1. access_log指令

语法: access_log path [format [buffer=size [flush=time]]];

access_log path format gzip[=level] [buffer=size] [flush=time];

access_log syslog:server=address[,parameter=value] [format];

access_log off;

默认值: access_log logs/access.log combined;

配置段: http, server, location, if in location, limit_except

gzip压缩等级。

buffer设置内存缓存区大小。

flush保存在缓存区中的最长时间。

不记录日志:access_log off;

使用默认combined格式记录日志:access_log logs/access.log 或 access_log logs/access.log combined;


2. log_format指令

语法: log_format name string …;

默认值: log_format combined “…”;

配置段: http

name表示格式名称,string表示等义的格式。log_format有一个默认的无需设置的combined日志格式,相当于apache的combined日志格式,

log_format  combined  '$remote_addr - $remote_user  [$time_local]  '

声明:本文转载于网络,文章链接:http://www.nd9p.com/12332.html