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. java.net.SocketException: No buffer space available 异常

    http://stackoverflow.com/questions/10088363/java-net-socketexception-no-buffer-space-available-maxim ...

  2. oracle Data blocks,Extents,Segments

    转载 先看Data blocks(也叫逻辑块,oracle块,页)吧,oracle存储数据都是在这些数据块中,一个数据块是磁盘上数据库物理空间一系列物理字节的组成.    比Data blocks更高 ...

  3. 条款35:考虑virtual函数以外的其他选择

    有一部分人总是主张virtual函数几乎总应该是private:例如下面这个例子,例子时候游戏,游戏里面的任务都拥有健康值这一属性: class GameCharacter{ public: int ...

  4. 在winform中给GridView加checkbox在按钮点击的时候获取选中的checkbox

    dataGridView绑定后 bool[] mark = new bool[this.dataGridView1.Rows.Count]; ; i < mark.Length; i++) { ...

  5. Ubuntu 安装arm-linux-gcc编译器

    /********************************************************************************** * Ubuntu 安装arm-l ...

  6. svn 服务器安装包下载地址

    svn 服务器安装包下载地址 https://www.visualsvn.com/server/download/

  7. python if语句,while语句

    一,if语句: python中最常用的判断语句,基本格式: 1.if else格式 if  条件: 结果 else: 结果 """ if 条件: 满足条件执行代码 els ...

  8. Jet Brains家族XX方法

    声明:本文转载自 https://www.jianshu.com/p/f404994e2843 2018/11/23

  9. 聊聊WPF中字体的设置

    1. 今天帮同事调试一个字体的bug:TextBox中的中文显示大小不一致, 比如包含"杰","热". 原因是WPF针对点阵字体需要指定特定字体才能正确渲染, ...

  10. 机器学习:评价分类结果(Precision - Recall 的平衡、P - R 曲线)

    一.Precision - Recall 的平衡 1)基础理论 调整阈值的大小,可以调节精准率和召回率的比重: 阈值:threshold,分类边界值,score > threshold 时分类为 ...