(1)user nginx nginx
Nginx用户及组,windows下不指定。
(2)worker_processes 8;
工作进程:数目。
(3)erro_log logs/error.log
error_log logs/error.log notice
error_lo logs/error.log info
错误日志:存放路径。
(4)pid logs/nginx.pid
pid:存放路径 。
(5)worker_rlimit_nofile 204800
指定进程可以打开的最大描述符:数目。
这个指令是指当一个nginx进程打开的最多文件描述数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。
(6)events
{
use epoll;
与apache相似,nginx针对不同的操作系统,有不同的事件模型。
- 标准事件模型
select , poll属于标准的事件模型 ,如果当前系统不存在更有效的方法,nginx会选择select和poll。
- 高效事件模型
kqueue,适用于BSD。
- epoll
使用于Linux内核2.6版本及以后的系统
- /dev/poll
solaris, hp, ux
- eventport
(7)worker_connections 204800
每个工作进程的最大连接数量
(8)keepalive_timeout 60
keepalive超时时间
(9)client_header_buffer_size 4k
客户端请求头部的缓冲区大小。这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE取得。
(10)open_file_cache_max=65535 inactive=60s
这个将为打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和打开文件数一致,inactive指经过多长时间文件没有被请求后删除缓存。
(11)open_file_cache_valid 80s
这个是指多长时间检查一次缓存的有效信息。
(12)open_file_cache_min_users 1
在inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的
(13)http{
设定http服务器,利用它的反向代理功能提供负载均衡支持
(14)include mime.types
设定mime 类型
(15)log_format
日志格式
$remote_addr与$http_x_forwarded_for用以记录客户端ip地址。
$remote_user:用来记录客户端用户名称。
$time_local:用来记录访问时间和时区。
$request:用来记录请求的url与http协议。
$status:用来记录请求状态。
$body_bytes_sent:记录发送给客户端文件内容大小。
$http_referer:用来记录从哪个页面链接 访问过来的。
$http_user_agent:记录客户浏览器的相关信息。
(16)acess_log logs/host.access.log main
用了log_format指令设置了日志格式之后,需要用access_log指令指定日志文件的存放路径 。
(17)server_names_hash_bucket_size 128
(18)client_header_buffer_size 4k
客户端请求头的缓冲区大小,这个可以根据你的系统分页大小来设置 。
(19)large_client_header_buffers 8 128k
如果header过大,使用这个值来读取。
(20)client_max_body_size 300m
设定通过nginx上传文件的大小。
(21)sendfile on
指定nginx是否调用sendfile函数(zero copy方式)来输出文件,对于普通应用,必须设为on。如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络IO处理速度,降低系统uptime。
(22)tcp_nopush on
是否使用socket的TCP_CORK选项。
(23)proxy_connct_timeout 90
后端服务器连接超时时间
(24)proxy_read_timeout 180
连接成功后,等待后端服务器响应时间
(25)proxy_send_timeout 180
后端服务器数据回传时间
(26)proxy_buffer_size 256k
设置从被处理服务器读取的第一部分应答的缓冲区大小。
(27)proxy_buffers 4 256k
设置用于读取应答的缓冲区数目和大小。
(28)upstream bakend{
server 127.0.0.1:8027
server 127.0.0.1:8028
server 127.0.0.1:8029
hash $request_uri
}
nginx的upstream目前支持4种方式的分配
- 轮询(默认)
- weight
- ip_hash
- fair(第三方):按后端服务器的响应时间来分配请求,响应时间短的优先分配。
- url_hash
(29)配置虚拟机
server
{
listen 80;
配置监听端口
server_name image.***.com;
配置访问域名
location ~* \.(mp3|exe)$ {
对以“mp3或exe”结尾的地址进行负载均衡
proxy_pass http://img_relay$request_uri;
设置被代理服务器的端口或套接字,以及URL
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
以上三行,目的是将代理服务器收到的用户的信息传到真实服务器上
}
最后欢迎大家访问我的个人网站:1024s