user nobody;
worker_processes 2;

#error_log logs/error.log;
error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;

#worker_rlimit_nofile   65535  #指定每个nginx进程可以打开的最大文件描述符数量

#worker_rlimit_sigpending  32768  #指定调用进程的真正用户ID的排队数量

# working_directory path          #默认值为prifix=path
events {

use poll;
worker_connections 1024;    #设置每个进程能处理的连接数,通过worker_connection,worker_processes能够计算出最大连接数为worker_connection*worder_processes;

#假设8个nginx进程(worder_processes),worker_connections 为32768  那么最大连接数就是8*32768  =262144;这个只是理论值而已,其实是达不到这个值的,受系统的限制;
}

http {
include mime.types;
default_type application/octet-stream;

#log_format main 这里的main表示的是格式的名称,可以定义多个log_foramt, 名字不重复就可以了
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'

#下面以upstream开头的都是upstream模块的相关的变量
'upstream_addr: "$upstream_addr"' #处理请求的upstream地址
'upstream_status: "$upstream_status"' #upstream服务器的应答状态
'upstream_response_time: "$upstream_response_time"' #upstream服务器响应时间(毫秒),多个响应以逗号和冒号分割
'upstream_http_header: "$upstream_http_host"' #$upstream_http_$HEADER HEADER可以是任意的http头,比如host,那么就是$upstream_http_host

'agent:$http_user_agent' #获取浏览器类型
;

#$http_x_forwarded_for 用户可能是经过反向代理,http_x_forwarded_for可以获取到用户的真实IP
#$body_bytes_sent 记录发送给客户端的文件主体内容的大小
#$http_referer 用于记录从哪个页面链接访问过来
#$http_user_agent 用于记录客户端浏览器的信息
#$status 用于记录请求状态

#名字为combined的日志格式
#log_format combined '$remote_addr - $remote_user [$time_local] "$request" ';

access_log logs/access.log main ; #这里的main表示用到了上面名字为main的log_format的格式
#access_log path [format [buffer=size |off]] #path表示日志的存放路径, format指定日志的格式名称, buffer=size 表示设置内置缓冲区的大小,
#access_log logs/access.log main buffer=32k; 设置缓冲区为32k
#access_log off; 关闭访问日志
#

#access_log logs/$server_name.access.log; 使用$server_name变量作为日志名 ,但是这种方式有限制
# 1. nginx进程设置的用户名和组必须对该路径有创建文件的权限,假设Ngxin的user指令设置的用户名和用户组都是wwww,而/data/logs/目录的用户名和用户组为root,日志文件/data/log/$server_name将无法被ningx创建
# 2. 缓冲区不会被使用
# 3. 对于每一条日志记录,日志文件都将先打开文件,写入日志,然后再马上关闭;
# 想法:这样的话,性能不怎么样了吧?详细的配置参数还是看实战Nginx吧。

sendfile on; #指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,

#http的核心模块

#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;  #客户端与服务器链接的有效时间 (单位:秒)

keepalive_requests 100; #设置keepalive连接次数,一次请求之后,如果该链接次数并没有超过keepalive_requests指令设置的请求次数,则服务器并不主动断开链接,而是直到达到keepalive_timeout指令设置的时间才关闭链接。

send_timeout 60;  #该指令设置发给客户端的应答超时时间。超时时间是指进行了两次TCP握手,还没有转为established状态的时间,如果超过这个时间,客户端没有响应,nginx关闭链接。

send_file on ;   #该指令启用或者禁用sendfile()函数,sendfile的作用于数据拷贝在两个文件描述符之间的操作函数.(linux里面的文件操作知识,感觉书上没写明白,还是看Unix环境编程吧)。这个功能谨慎使用,出现过启用之后

#比禁用的效率更低的情况。(关于send_file函数的详解http://www.vpsee.com/2009/07/linux-sendfile-improve-performance/)

server_tokens  on#是否在显示返回nginx的版本号

tcp_nodely  on ;  #该指令运行禁止使用套接字选项TCP_NODELAY,仅适用于keep-alive连接

#默认情况下数据发送时,内核并不会马上发送,它可能等待更多的字节组成一包,这样就可以提高IO的发送效率,但在每次发送很少字节的程序中,TCP_NODELAY时等待时间就会比较长,根据实际情况选择是否开启。

fastcgi_connect_timeoujt 300;

fastcgi_send_timeout 300;

fastcgi_read_timeout 300;

fastcgi_buffer_size 64k;

fastcgi_buffers 4 64k;

fastcgi_busy_buffers_size 128k;

fastcgi_temp_file_write_size 128k;

#对网页文件css,js,xml等启动gzip压缩,减少数据量传输,提高访问速度

gzip on;

gzip_min_length 1k;

gzip_buffers 4 16k;

gzip_http_version 1.0;

gzip_comp_level 2;

gzip_types text/plain application/x-javascript  text/css application/xml;

gzip_vary on;

#允许客户端请求的最大单个文件字节数
client_max_body_size 300m;

#缓冲区代理缓冲用户端请求的最大字节数,可以理解为先保存到本地再传给用户
client_body_buffer_size 128k;

#跟后端服务器连接的超时时间_发起握手等候响应超时时间
proxy_connect_timeout 600;

#连接成功后,等候后端服务器响应时间_其实已经进入后端的排队之中等候处理
proxy_read_timeout 600;

#后端服务器数据回传时间,就是在规定时间后端服务器必须传完所有的数据
proxy_send_timeout 600;

#代理请求缓存区,这个缓存区间会保存用户的头信息以供nginx进行规则处理,一般只要能保存头信息即可
proxy_buffer_size 16k;

#同上,告诉Nginx保存单个用的几个buffer最大用多大空间
proxy_buffers 4 32k;

#如果系统繁忙的时候可以申请的最大proxy_buffers 官方推荐*2
proxy_busy_buffers_size 64k;

#proxy 缓存临时文件的大小
proxy_temp_file_write_size 64k;
fastcgi_intercept_errors on; #设置404错误页面,必须开启此项

upstream php_test_pool{
server 127.0.0.1:9000 weight=4 max_fails=2 fail_timeout=30s;
}

upstream php_server_pool {
server 192.168.1.10:80 weight=4 max_fails=2 fail_timeout=30s; #server的后面可以是域名,IP地址加端口, unix socket;
server example.com weight=5;
server unix:/tmp/backend3; #server 是一个unix socket
server 192.168.1.11:80 weight=4 max_fails=2 fail_timeout=30s;
server 192.168.1.12:80 weight=2 max_fails=2 fail_timeout=30s backup; #server 192.168.1.25:3245 backup; #仅仅在非backup服务器全部宕机或者繁忙的时候才启用

}

upstream message_server_pool {
ip_hash; #确保同一个IP访问的时候,会分配到同一台服务器,这样session就可以共享了;使用ip_hash之后,无法保证服务器负载均衡,而且服务器权重等方法不起作用,所以如果后端服务器能共享session还是用服务器的
#不用使用ip_hash方式
server 192.168.1.13:3245;
server 192.168.1.14:3245 down; #down的意思是标记服务器为永久离线状态 #如果后端服务器需要充Nginx负载均衡中(已使用ip_hash)中摘除,那么必须将其标记为"down",而不是从配置文件中删掉或者注释掉,标记为down后,Nginx还是会按照3台负载均衡哈希,如果
server 192.168.1.24:3245; #直接注释掉192.168.1.14:3245,那么就会按照两个哈希,原来已经被分配到192.168.1.13:3245有可能被哈希到192.168.1.24:3245,原来的session就会失效

}

#*************************************************************************
#nginx缓存区的使用,作用类似squid,第一次访问的时候加载资源,后面访问的时候直接使用资源,这里是使用Nginx的方式实现缓存,这里是缓存静态的资源类文件, fastcgi也可以可以缓存的,在server模块里面可以设置的,后面会提到
#注 proxy_temp_path, proxy_cache_path指定的路径必须在一个分区
proxy_temp_path /data/proxy_temp_path;

#设置web缓存区的名字为cache_one ,内存缓存空间大小为200M, 自动清除超过1天美意被访问的缓存数据,磁盘空间大小为30GB
proxy_cache_path /data/proxy_cache_path levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
#************************************************************************

upstream bbs_server_pool {
server 192.168.1.15:80 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.1.16:80 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.1.17:80 weight=1 max_fails=2 fail_timeout=30s;
}
include vhost/*.conf;
}

【摘自张宴的"实战:Nginx"】nginx配置的更多相关文章

  1. 【摘自张宴的"实战:Nginx"】使用nginx的fastcgi_cache缓存php输出的内容

    亲自测试发现,fastcgi_cache虽然可以缓存生成的php输出的文件,但是有个弊端,在缓存的失效时间之内,你继续访问这个地址,输出的内容没有发生变化,即使数据库新增了数据或者删除了数据,所以不适 ...

  2. 【摘自张宴的"实战:Nginx"】使用nginx的proxy_cache模块替代squid,缓存静态文件

    #user nobody;worker_processes 1; error_log logs/static_source.error.log;#error_log logs/error.log no ...

  3. 【摘自张宴的"实战:Nginx"】http auth baseic模块(打开页面需要密码验证)

    location /admin { auth_basic "kingsoft"; auth_basic_user_file httppasswd;      #密码文件的路径  默 ...

  4. 【摘自张宴的"实战:Nginx"】try_files指令

    语法:try_files param1 [param2...paramN] fallback 默认值:none 使用环境: location 该指令用于告诉nginx测试每个文件是否存在,并且使用首先 ...

  5. 【摘自张宴的"实战:Nginx"】nginx模块开发

    Nginx的模块不能够像Apache那样动态的加载,所以模块都要预先编译进Nginx的二进制可执行文件中. Nginx的模块有三种角色: 1. Handler(处理模块)     用于处理Http请求 ...

  6. 【摘自张宴的"实战:Nginx"】Nginx的server指令

    server 语法:server name[parameters] 默认值:none 使用环境:upstream 该指令用于指定后端服务器的名称和参数.服务器的名称可以是一个域名.一个IP地址.端口号 ...

  7. 图文解说:Nginx+tomcat配置集群负载均衡

    图文解说:Nginx+tomcat配置集群负载均衡 博客分类: appserver nginxTomcatUbuntuLinux网络应用  作者:niumd Blog:http://ari.iteye ...

  8. Nginx+tomcat配置集群负载均衡

    开发的应用采用F5负载均衡交换机,F5将请求转发给5台hp unix服务器,每台服务器有多个webserver实例,对外提供web服务和socket等接口服务.之初,曾有个小小的疑问为何不采用开源的a ...

  9. nginx入门与实战 安装 启动 配置nginx Nginx状态信息(status)配置 正向代理 反向代理 nginx语法之location详解

    nginx入门与实战 网站服务 想必我们大多数人都是通过访问网站而开始接触互联网的吧.我们平时访问的网站服务 就是 Web 网络服务,一般是指允许用户通过浏览器访问到互联网中各种资源的服务. Web ...

随机推荐

  1. 【VS外接程序】利用T4模板生成模块代码

    引言 记得第一次做asp.net mvc项目时,可以用model直接生成Html的增删改查页面, 没什么特殊要求都可以不用修改直接用了, 觉得很神奇,效率太高了.后来在做客户端开发时,发现很多模块都是 ...

  2. db2生成连续日期

    //生成时间段内连续日期 select * from ( select date('2008-01-01') + (row_NUMBER() over () -1) days AS datennn f ...

  3. Shell编程-环境变量配置文件

    1.source命令 修改配置文件后,必须注销重新登陆才能生效,使用source命令可以不用重新登陆 source  配置文件 . 配置文件 环境变量配置文件中主要是定义对系统操作环境生效的系统默认环 ...

  4. Kattis - redblacktree Red Black Tree (树形背包)

    问题:有一课含有n(n<=2e5)个结点的数,有m(m<=1000)个结点是红色的,其余的结点是黑色的.现从树中选若干数量的结点,其中红色的恰有k个,并且每个结点都不是其他任何另一个结点的 ...

  5. CodeForces - 794C:Naming Company(博弈&简单贪心)

    Oleg the client and Igor the analyst are good friends. However, sometimes they argue over little thi ...

  6. c# Http请求之HttpClient

    利用HttpClient进行Http请求,基于此,简单地封装了下: using System; using System.Collections.Generic; using System.Colle ...

  7. oracle获得当前时间,精确到毫秒并指定精确位数

    oracle获得当前时间的,精确到毫秒   可以指定精确豪秒的位数 select to_char(systimestamp, 'yyyymmdd hh24:mi:ss.ff ') from dual; ...

  8. 如何上Chrome谷歌商店

    将以下代码复制到本地Hosts中即可. #Google Services START64.233.162.83 0.docs.google.com64.233.162.83 0.drive.googl ...

  9. Maven实现直接部署Web项目到Tomcat7

    如题目,自动部署到Web服务器,直接上过程. 1.Tomcat7的用户及权限配置:在conf目录下,找到tomcat-users.xml,添加manager权限的用户. <role rolena ...

  10. Python函数-abs()

    说明: 返回绝对值 参数可以是:负数.正数.浮点数或者长整形 实例: abs(-1.2) #返回 1.2 abs(1.2) #返回 1.2 abs(-11216.5) #返回 11216.5 abs( ...