nginx主配置文件解释

Tengine 主配置文件

Tengine 安装

tar zxvf tengine-2.0.3.tar.gz

cd tengine-2.0.3/

./configure --prefix=/data/ops/app/tengine-2.0.3/ --with-http_stub_status_module --with-pcre --with-http_upstream_check_module

make && make install

echo "/data/ops/app/tengine-2.0.3/sbin/nginx" >> /etc/rc.local

部分模块说明:

--with-http_upstream_check_module

该模块可以为Tengine提供主动式后端服务器健康检查的功能。

该模块在Tengine-1.4.0版本以前没有默认开启,它可以在配置编译选项的时候开启:./configure --with-http_upstream_check_module

--with-pcre

设置PCRE库的源码路径

二、nginx配置文件

配置文件分为几块儿

nginx.conf 为主配置文件

user root root;//设置worker进程的用户名和组名为root

worker_processes  auto;//根据cpu数量自动设定Tengine的worker进程数量

worker_rlimit_nofile 65535;//设置打开的文件句柄最大数量为65535。这个参数跟系统的ulimit有关

events {

###如果你在./configure的时候指定了不止一个事件模型,你可以通过这个参数告诉nginx你想使用哪一个事件模型,默认情况下nginx在编译时会检查最适合你系统的事件模型。

###你可以在这里看到所有可用的事件模型并且如果在./configure时激活它们。

use epoll;

worker_connections  65535;

//设定事件模型使用epoll,每个worker进程可用的最大连接数是65535。
//为什么nginx比apache快,epoll起到了比较关键的作用。

}

http {

###文件扩展名与文件类型映射表

include       mime.types;

###默认文件类型

default_type  application/octet-stream;

#隐藏版本号

server_tokens           off;

server_info             off;

###这个参数指定了是否记录客户端的请求出现404错误的日志,通常用于不存在的robots.txt和favicon.ico文件

log_not_found           off;

log_format      main    ‘$host$server_addr$server_port$remote_addr$time_iso8601$request_method$uri$args‘

‘$server_protocol$status$body_bytes_sent$bytes_sent‘

‘$request_time$http_referer$http_user_agent$http_x_forwarded_for‘

‘$upstream_addr$upstream_status$upstream_response_time$upstream_cache_status‘;

log_format      mainandpost     ‘$host$server_addr$server_port$remote_addr$time_iso8601$request_method$uri$args‘

‘$request_body$server_protocol$status$body_bytes_sent$bytes_sent‘

‘$request_time$http_referer$http_user_agent$http_x_forwarded_for‘

‘$upstream_addr$upstream_status$upstream_response_time$upstream_cache_status‘;

access_log logs/access-$year-$month-$day.log main;

open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;

sendfile        on;//打开会使用sendfile系统调用,用来发送静态文件,节省了文件在用户空间和内核空间拷贝的消耗。

tcp_nopush      on;//打开后,会使TCP在发送数据时进行缓存,提高传输效率,但是会增加客户端响应时间。

request_time_cache off;

req_status_zone req_status_zone "$host" 10M;//创建统计使用的共享内存。zone_name是共享内存的名称,value用于定义key,支持变量。size是共享内存的大小。

include proxy_cache_path.conf;

include upstream.conf;

include vhost.*.conf;

}

其他例如upstream,vhost 等都通过include去引用

日志格式分隔符一般用crtl+v+a作为分隔符,这样为了以后方便对日志作分析

‘$host//“Host”请求头的值,如果没有该请求头,则为与请求对应的虚拟主机的首要主机名。

$server_addr//接受请求的服务器地址。

为计算这个值,通常需要进行一次系统调用。为了避免系统调用,必须指定listen指令 的地址,并且使用bind参数。

$server_port//接受请求的虚拟主机的端口。

$remote_addr//客户端IP地址。

$time_iso8601//ISO8601标准格式下的本地时间

$request_method//HTTP方法,通常为“GET”或者“POST”。

$uri//当前请求规范化以后的URI。

变量$uri的值可能随请求的处理过程而改变。 比如,当进行内部跳转时,或者使用默认页文件。

$args//请求行中参数字符串

‘$request_body//请求正文。

$server_protocol//请求协议,通常为“HTTP/1.0”或“HTTP/1.1”。

$status//响应状态

$body_bytes_sent//发送给客户端的字节数,不包括响应头的大小

$bytes_sent//发送给客户端的总字节数

‘$request_time//请求处理时间,单位为秒,精度毫秒; 从读入客户端的第一个字节开始,直到把最后一个字符发送给客户端后进行日志写入为止。

$http_referer//记录从哪个页面链接访问过来的

$http_user_agent//记录客户端浏览器相关信息

$http_x_forwarded_for//记录客户端IP地址

$upstream_addr//保存服务器的IP地址和端口或者是UNIX域套接字的路径

$upstream_status//保存服务器的响应代码。 出现多个响应时,也是以逗号和冒号隔开。

$upstream_response_time//以毫秒的精度保留服务器的响应时间,(输出)单位是秒。 出现多个响应时,也是以逗号和冒号隔开。

$upstream_cache_status//前端代理和后端服务器响应状态

###如果需要修改从被代理服务器传来的应答头中的"Location"和"Refresh"字段,可以用这个指令设置。

proxy_redirect off;

###防止在客户端自己终端请求的情况下中断代理请求。

proxy_ignore_client_abort  on;#禁止服务器主动拒绝客户端

proxy_next_upstream http_500 http_502 http_503 http_504 error timeout invalid_header;

###允许重新定义或者添加发往后端服务器的请求头。value可以包含文本、变量或者它们的组合。

###当且仅当当前配置级别中没有定义proxy_set_header指令时,会从上面的级别继承配置。 默认情况下,只有两个请求头会被重新定义:

proxy_set_header Host $host:$server_port; #传递host头+端口号给后端

###将$remote_addr变量值添加在客户端“X-Forwarded-For”请求头的后面,并以逗号分隔。

###如果客户端请求未携带“X-Forwarded-For”请求头,$proxy_add_x_forwarded_for变量值将与$remote_addr变量相同。

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Host $server_name;

proxy_set_header X-Real-IP $remote_addr; #传递客户端源地址

proxy_set_header Client-Real-IP $remote_addr;

proxy_set_header                        Accept-Encoding ‘‘;#强制关闭后端gzip

###设置从被代理服务器读取的第一部分应答的缓冲区大小。

###通常情况下这部分应答中包含一个小的应答头。

###默认情况下这个值的大小为指令proxy_buffers中指定的一个缓冲区的大小,不过可以将其设置为更小。

proxy_buffer_size       32k;

###设置用于读取应答(来自被代理服务器)的缓冲区数目和大小,默认情况也为分页大小,根据操作系统的不同可能是4k或者8k。

proxy_buffers           4 32k;

###当开启缓冲响应的功能以后,在没有读到全部响应的情况下,写缓冲到达一定大小时,nginx一定会向客户端发送响应,

###直到缓冲小于此值。这条指令用来设置此值。 同时,剩余的缓冲区可以用于接收响应,如果需要,一部分内容将缓冲到临时文件。

###该大小默认是proxy_buffer_size和proxy_buffers指令设置单块缓冲大小的两倍。

proxy_busy_buffers_size 64k;

###设置在写入proxy_temp_path时数据的大小,在预防一个工作进程在传递文件时阻塞太长。

proxy_temp_file_write_size      64k;

client_max_body_size     100m;

proxy_http_version 1.1;

proxy_set_header Connection "";


语法:


proxy_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503 | http_504 | http_404 | off ...;


默认值:


proxy_next_upstream error timeout;


上下文:


http, server, location

指定在何种情况下一个失败的请求应该被发送到下一台后端服务器:

error

和后端服务器建立连接时,或者向后端服务器发送请求时,或者从后端服务器接收响应头时,出现错误;

timeout

和后端服务器建立连接时,或者向后端服务器发送请求时,或者从后端服务器接收响应头时,出现超时;

invalid_header

后端服务器返回空响应或者非法响应头;

http_500

后端服务器返回的响应状态码为500;

http_502

后端服务器返回的响应状态码为502;

http_503

后端服务器返回的响应状态码为503;

http_504

后端服务器返回的响应状态码为504;

http_404

后端服务器返回的响应状态码为404;

off

停止将请求发送给下一台后端服务器。

需要理解一点的是,只有在没有向客户端发送任何数据以前,将请求转给下一台后端服务器才是可行的。也就是说,如果在传输响应到客户端时出现错误或者超时,这类错误是不可能恢复的。


语法:


proxy_buffer_size size;


默认值:


proxy_buffer_size 4k|8k;


上下文:


http, server, location

设置缓冲区的大小为size。nginx从被代理的服务器读取响应时,使用该缓冲区保存响应的开始部分。这部分通常包含着一个小小的响应头。该缓冲区大小默认等于proxy_buffers指令设置的一块缓冲区的大小,但它也可以被设置得更小。


语法:


proxy_buffers number size;


默认值:


proxy_buffers 8 4k|8k;


上下文:


http, server, location

为每个连接设置缓冲区的数量为number,每块缓冲区的大小为size。这些缓冲区用于保存从被代理的服务器读取的响应。每块缓冲区默认等于一个内存页的大小。这个值是4K还是8K,取决于平台。


语法:


proxy_busy_buffers_size size;


默认值:


proxy_busy_buffers_size 8k|16k;


上下文:


http, server, location

当开启缓冲响应的功能以后,在没有读到全部响应的情况下,写缓冲到达一定大小时,nginx一定会向客户端发送响应,直到缓冲小于此值。这条指令用来设置此值。 同时,剩余的缓冲区可以用于接收响应,如果需要,一部分内容将缓冲到临时文件。该大小默认是proxy_buffer_size和proxy_buffers指令设置单块缓冲大小的两倍。


语法:


proxy_temp_file_write_size size;


默认值:


proxy_temp_file_write_size 8k|16k;


上下文:


http, server, location

在开启缓冲后端服务器响应到临时文件的功能后,设置nginx每次写数据到临时文件的size(大小)限制。 size的默认值是proxy_buffer_size指令和proxy_buffers指令定义的每块缓冲区大小的两倍, 而临时文件最大容量由proxy_max_temp_file_size指令设置。

$proxy_add_x_forwarded_for

将$remote_addr变量值添加在客户端“X-Forwarded-For”请求头的后面,并以逗号分隔。 如果客户端请求未携带“X-Forwarded-For”请求头,$proxy_add_x_forwarded_for变量值将与$remote_addr变量相同。

时间: 2024-10-09 22:24:00

nginx主配置文件解释的相关文章

优化nginx主配置文件

我在服务器所使用的web软件是Tengine.所以配置文件中有些选项是不兼容nginx的,已作出说明.Tengine的主页是http://tengine.taobao.org 配置文件内容 ####################################################################### # # This is the main Nginx configuration file. # More information about the configu

Nginx 主配置文件参数详解

Nginx 主配置文件参数详解 Nginx 安装完毕后,会有响应的安装目录,安装目录里 nginx.conf 为 nginx 的主配置文件, ginx 主配置文件分为 4 部分,main(全局配置).server(主机设置).upstream(负载均衡 服务器设)和 location(URL 匹配特定位置的设置),这四者关系为:server 继承 main, location 继承 server,upstream 既不会继承其他设置也不会被继承. 一.Nginx 的 main(全局配置)文件 [

Nginx主配置文件nginx.conf中文详解

第1章 nginx配置解释图解 第2章 Nginx核心配置文件nginx.conf史上最细中文详解 2.1 定义Nginx运行的用户和用户组 2.2 nginxworker进程数,即处理请求的进程(熟称负责接客的服务员) 2.3 cpu亲和力配置,让不同的进程使用不同的cpu 2.4 全局错误日志定义类型,[ debug|info|notice|warn|error|crit] 2.5 把进程号记录到文件 2.6 Nginx worker最大打开文件数,可设置为系统优化后的ulimit -HSn

Nginx主配置文件说明

#运行用户 user nobody; #启动进程,通常设置成和cpu的数量相等 worker_processes 1; #全局错误日志及PID文件 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; #工作模式及连接数上限 events { #epoll是多路复用IO(I/O Multiplexing)中的一种方式, #仅

nginx主配置文件详解

#定义Nginx运行的用户和用户组user www www; #nginx进程数,建议设置为等于CPU总核心数.worker_processes 8; #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]error_log /var/log/nginx/error.log info; #进程文件pid /var/run/nginx.pid; #一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulim

Nginx主配置参数详解,Nginx配置网站

1.Niginx主配置文件参数详解 a.Linux中安装nginx.博文地址为:http://www.cnblogs.com/cindy-cindy/p/6847499.html b.当Nginx安装完毕后,会有相应的安装目录,安装目录里的nginx.confg为nginx的主配置文件,nginx主配置文件分为4部分,main(全局配置).server(主机配置).upstream(负载均衡服务器设置)以及location(URL匹配特定位置的设置),这四者的关系是:server继承main,l

nginx 2配置文件

Nginx主配置文件位置一般放在/usr/local/nginx/conf/nginx.conf 配置语句格式为 “关键字  值:” ( 例:keyname  key; ) 在http内可以有多个server 在server内可以有多个loctation 主配置文件包括 1 全局配置 (在括号之外的内容) user nginx [nginx];  运行用户(nginx组可以不用写) worker_processes 2;   指定工作进程数量 (一般都是按照核心数指定一比一) worker_cp

nginx之主配置文件解读

主配置文件解读 过滤conf文件的内容 1 grep -v "^#" nginx.conf | grep -v "^$" nginx.conf主配置文件 1 # 工作进程数 根据cpu 查看cpu信息 cat /proc/cpuinfo 或者top 再按下数字1看核数 2 worker_processes 4; 3 # 事件连接数 4 events { 5 worker_connections 1024; 6 } 7 http { 8 # 关键字 9 include

LNMP架构应用实战——Nginx服务配置文件介绍

LNMP架构应用实战--Nginx服务配置文件介绍 nginx的配置文件比较简单,但功能相当强大,可以自由灵活的进行相关配置,因此,还是了解下其配置文件的一此信息 1.Nginx服务目录结构介绍 安装完成后,在安装路径下就会有Nginx目录信息 [[email protected] application]# tree nginx nginx +-- client_body_temp +-- conf          #nginx服务配置文件目录 |   +-- fastcgi.conf