【摘自张宴的"实战:Nginx"】nginx配置


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;
}

转载于:https://www.cnblogs.com/maxomnis/p/5535075.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目 录 完整诠释Nginx 分享Nginx实战经验 不可多得的Nginx一手资料 联系博文视点 序言 第1部分 基础篇 第1章 Nginx简介 1.1 常用的Web服务器简介 1.2 Nginx的发展 1.3 选择Nginx的理由 1.4 Nginx与Apache、 Lighttpd的综合对比 第2章 Nginx服务器的安装与配置 2.1 安装Nginx服务器所需要的系统资源 2.2 Nginx的下载 2.3 Nginx的安装 2.4 Nginx的启动、 停止、 平滑重启 2.5 Nginx的平滑重启 2.6 Nginx的信号控制 2.7 Nginx的平滑升级 第2部分 进阶篇 第3章 Nginx的基本配置与优化 3.1 Nginx的完整配置示例 3.2 Nginx的虚拟主机配置 3.3 Nginx的日志文件配置与切割 3.4 Nginx的压缩输出配置 3.5 Nginx的自动列目录配置 3.6 Nginx的浏览器本地缓存设置 第4章 Nginx与PHP( FastCGI) 的安装、 配置与优化 4.1 获取相关开源程序 4.2 安装PHP 5.2.10( FastCGI模式) 4.3 安装Nginx 0.8.15 4.4 配置开机自动启动Nginx+PHP 4.5 优化Linux内核参数 4.6 在不停止Nginx服务的情况下平滑变更Nginx配置 4.7 编写每天定时切割Nginx日志的脚本 第5章 Nginx与JSP、 ASP.NET、 Perl的安装与配置 5.1 Nginx与JSP( Tomcat) 在Linux上的安装、 配置 5.2 Nginx与ASP.NET( Mono+FastCGI) 在Linux上的安装、 配置 5.3 Nginx与Perl( FastCGI) 在Linux上的安装、 配置 第6章 Nginx HTTP负载均衡和反向代理的配置与优化 6.1 什么是负载均衡和反向代理 6.2 常见的Web负载均衡方法 6.3 Nginx负载均衡与反向代理的配置实例 6.4 Nginx负载均衡的HTTP Upstream模块 6.5 Nginx负载均衡服务器的双机高可用 第7章 Nginx的Rewrite规则与实例 7.1 什么是Nginx的Rewrite规则 7.2 Nginx Rewrite规则相关指令 7.3 PCRE正则表达式语法 7.4 Nginx的Rewrite规则编写实例 7.5 Nginx与Apache的Rewrite规则实例对比 第8章 Nginx模块开发 8.1 Nginx模块概述 8.2 Nginx模块编写实践 第9章 Nginx的Web缓存服务与新浪网的开源NCACHE模块 9.1 什么是Web缓存 9.2 Nginx的Web缓存服务 9.3 新浪网开源软件项目——基于Nginx的NCACHE网页缓存系统 第3部分 实战篇 第10章 Nginx在国内知名网站中的应用案例 10.1 Nginx反向代理与负载均衡类网站应用案例 10.2 Nginx+PHP类网站应用案例 10.3 Nginx视频点播类网站应用案例 第11章 Nginx的非典型应用实例 11.1 用HTTPS( SSL) 构建一个安全的Nginx Web服务器 11.2 采用Nginx搭建FLV视频服务器 11.3 Nginx+PHP+MySQL在小内存VPS服务器上的优化 11.4 采用Nginx搭建正向代理服务器 第4部分 模块篇 第12章 Nginx的核心模块 12.1 主模块指令 12.2 主模块变量 12.3 事件模块指令 第13章 Nginx的标准HTTP模块 13.1 HTTP的核心模块 13.2 HTTP Upstream模块 13.3 HTTP Access模块 13.4 HTTP Auth Basic模块 13.5 HTTP Autoindex模块 13.6 HTTP Browser模块 13.7 HTTP Charset模块 13.8 HTTP Empty Gif模块 13.9 HTTP Fcgi模块 13.10 geo模块 13.11 Gzip模块 13.12 HTTP Headers模块 13.13 HTTP Index模块 13.14 HTTP Referer模块 13.15 HTTP Limit Zone模块 13.16 HTTP Limit Req模块 13.17 HTTP Log模块 13.18 HTTP Map模块 13.19 HTTP Memcached模块 13.20 HTTP Proxy模块 13.21 HTTP Rewrite模块 13.22 HTTP SSI模块 13.23 HTTP Userid模块 第14章 Nginx的其他HTTP模块 14.1 HTTP Addition模块 14.2 Embedded Perl模块 14.3 Flv Stream模块 14.4 HTTP Gzip Static模块 14.5 HTTP Random Index模块 14.6 HTTP Geo IP模块 14.7 HTTP RealIp模块 14.8 HTTP SSL模块 14.9 HTTP Stub Status模块 14.9.1 stub_status指令 14.10 HTTP Sub模块 14.11 HTTP Dav模块 14.12 Google Perftools模块 14.13 HTTP XSLT模块 14.14 HTTP Secure Link模块 14.15 HTTP Image Filter模块 第15章 Nginx的邮件模块 15.1 Nginx邮件核心模块 15.2 Nginx邮件认证模块 15.3 Nginx邮件代理模块 15.4 Nginx邮件SSL模块 15.5 Nginx邮件模块配置实例 索引 参考资料 编辑手记 《 实战Nginx: 取代Apache的高性能Web服务器》 读者交流区 勃勃生机, 潇洒开源 反侵权盗版声明 实战Nginx: 取代Apache的高性能Web服务器

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值