负载均衡—nginx配置文件
下面我们开始阐述nginx如何配置及其使用,
配置文件详解
Nginx的主配置文件是nginx.conf,我们上面编译安装的位置是/etc/nginx。内容如下。
默认的配置文件如下
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } } |
从上面的示例中我们可以看出Nginx的配置文件的结构如下
在配置文件中,使用{ }来表示一个块,例如
http { …… server{ …… } } |
参数说明(不完整)
参数 |
位置 |
语法 |
功能说明 |
备注 |
user |
全局 |
nginx |
使用那个系统账户启动nginx |
|
worker_processes |
全局 |
2 |
nginx的工作进程数,正整数,推荐和处理器核心数一致,但是也推荐不要大于8。 |
|
worker_cpu_affinity |
全局 |
01 10 |
处理器绑定设置,这里使用0和1来代表处理器,示例中,我们使用了双核处理器。说明下,一个工作进程可以绑定到多个处理器核心上。这里设定一个工作进程绑定在处理器1上。第二个工作进程绑定在处理器2上 |
|
pid |
全局 |
/var/run/nginx.pid |
默认pid文件的位置 |
|
worker_rlimit_nofile |
全局 |
65535 |
每个工作进程可打开的文件数,设定可以和limit.conf设置一样。 |
|
events {} |
全局 |
event代码块 |
||
use |
events |
select poll epoll(推荐) kqueue(仅限bsd) |
指定使用处理大批量文件描述符的方式,这里推荐为epoll,它可以显著提示多路IO性能,它需要内核版本大于2.5.44。如果使用RHEL5,可能出现错误。如果您是BSD的系统,可以使用Kqueue。 |
|
worker_connections |
events |
数量 |
这里推荐和系统的limit.conf中的nofile设置为一阳指 |
|
multi_accept |
events |
on|off |
尽可能多的接受请求 |
|
error_log |
全局 http server location |
off /path/to/file |
错误日志,你可以使用off关闭它,也可以使用path/to/file来指定错误日志文件。默认的错误日志位置是/var/log/nginx/error.log |
|
http{} |
全局 |
http代码块 |
||
include |
http |
包含此文件/或者路径,支持正则表达式 其中,说明下“include mime.types;”这个是文件扩展名与文件类型映射表 |
||
aio |
http server localtion |
On | off(默认) Threads[=pool] |
对于linux,内核版本需要大于2.6.22才可以使用,对于FreeBSD版本需要高于4.3 对于thread,需要niginx高于1.7.11。event模式必须为epoll,kqueue,eventport |
Nginx版本高于0.8.11 |
aio_write |
http server localtion |
On| off(默认) |
Nginx版本高于1.9.13 |
|
directio |
http server localtion |
|||
output_buffers |
http server localtion |
|||
alias |
location |
Path |
指定关联的路径 |
|
default_type |
全局 |
默认的文件类型 |
||
charset |
全局 |
Utf-8 |
默认的字符集编码 |
|
log_format |
全局 http server |
|||
access_log |
全局 http、 server localtion |
off Path/to/file |
||
sendfile |
On | Off |
开启,启用sendfile,可以在磁盘和tcp socket之间互相拷贝数据,提升性能 |
||
fastcgi_intercept_errors |
On | Off |
|||
tcp_nopush |
On | Off |
|||
server_names_hash_bucket_size |
||||
client_header_buffer_size |
||||
large_client_header_buffers |
||||
client_max_body_size |
||||
tcp_nodelay |
||||
server_tokens |
http |
On | Off(推荐) |
安全选项,关闭nginx的版本显示 |
|
client_body_buffer_size |
||||
proxy_connect_timeout |
||||
proxy_read_timeout |
||||
proxy_send_timeout |
||||
proxy_buffer_size |
||||
proxy_buffers |
||||
proxy_busy_buffers_size |
||||
keepalive_timeout |
||||
Gzip |
||||
gzip_min_length |
||||
gzip_comp_level |
||||
gzip_types |
||||
gzip_vary |
||||
open_file_cache |
||||
open_file_cache_min_uses |
||||
open_file_cache_valid |
||||
server{} |
全局 |
|||
Upstream {} |
全局 |
Nginx的变量
Nginx的全局变量
变量 |
说明 |
arg_PARAMETER |
这个变量包含GET请求中,如果有变量PARAMETER时的值。 |
args |
这个变量等于请求行中(GET请求)的参数,如:foo=123&bar=blahblah; |
binary_remote_addr |
二进制的客户地址。 |
body_bytes_sent |
响应时送出的body字节数数量。即使连接中断,这个数据也是精确的。 |
content_length |
请求头中的Content-length字段。 |
content_type |
请求头中的Content-Type字段。 |
cookie_COOKIE |
cookie COOKIE变量的值 |
document_root |
当前请求在root指令中指定的值。 |
document_uri |
与uri相同。 |
host |
请求主机头字段,否则为服务器名称。 |
hostname |
Set to themachine’s hostname as returned by gethostname |
HTTPHEADER中的变量
变量 |
说明 |
is_args |
如果有args参数,这个变量等于”?”,否则等于”",空值。 |
http_user_agent |
客户端agent信息 |
http_cookie |
客户端cookie信息 |
limit_rate |
这个变量可以限制连接速率。 |
query_string |
与args相同。 |
request_body_file |
客户端请求主体信息的临时文件名。 |
request_method |
客户端请求的动作,通常为GET或POST。 |
remote_addr |
客户端的IP地址。 |
remote_port |
客户端的端口。 |
remote_user |
已经经过Auth Basic Module验证的用户名。 |
request_completion |
如果请求结束,设置为OK. 当请求未结束或如果该请求不是请求链的最后一个时,为空(Empty) |
request_method |
GET或POST |
request_filename |
当前请求的文件路径,由root或alias指令与URI请求生成。 |
request_uri |
包含请求参数的原始URI,不包含主机名,如:”/foo/bar.php?arg=baz”。不能修改。 |
scheme |
HTTP方法(如http,https)。 |
server_protocol |
请求使用的协议,通常是HTTP/1.0或HTTP/1.1。 |
server_addr |
服务器地址,在完成一次系统调用后可以确定这个值。 |
server_name |
服务器名称。 |
server_port |
请求到达服务器的端口号。 |
日志中的变量
变量 |
说明 |
$remote_addr |
记录客户端IP地址 |
$http_x_forwarded_for |
记录客户端IP地址,针对有代理的服务器添加。(可能会出现安全问题) |
$remote_user |
记录客户端用户名称 |
$request |
记录请求的URL和HTTP协议 |
$status |
记录请求状态 |
$body_bytes_sent |
发送给客户端的字节数,不包括响应头的大小; |
$bytes_sent |
发送给客户端的总字节数。 |
$connection |
连接的***。 |
$connection_requests |
当前通过一个连接获得的请求数量。 |
$msec |
日志写入时间。单位为秒,精度是毫秒。 |
$pipe |
如果请求是通过HTTP流水线(pipelined)发送,pipe值为“p”,否则为“.”。 |
$http_referer |
记录从哪个页面链接访问过来的 |
$http_user_agent |
记录客户端浏览器相关信息 |
$request_length |
请求的长度(包括请求行,请求头和请求正文)。 |
$request_time |
请求处理时间,单位为秒,精度毫秒; |
$time_iso8601 |
ISO8601标准格式下的本地时间。 |
$time_local |
通用日志格式下的本地时间。 |
转载于:https://blog.51cto.com/wqlszy2016/1891935