Quinn

把所有的时间为你们服务,请叫我雷锋。。。

笔记

nginx的配置和使用

已有 461 次阅读2016-03-07 22:33 |系统分类:杂谈 |

随着互联网信息的爆炸性增长,负载均衡(load balance)已经不再是一个很陌生的话题,顾名思义,负载均衡即是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快,给用户很好的体验。快速增长的访问量和数据流量催生了各式各样的负载均衡产品,很多专业的负载均衡硬件提供了很好的功能,但却价格不菲,这使得负载均衡软件大受欢迎,nginx就是其中的一个。

nginx第一个公开版本发布于2004年,2011年发布了1.0版本。它的特点是稳定性高、功能强大、资源消耗低,从其目前的市场占有而言,nginx大有与apache抢市场的势头。其中不得不提到的一个特性就是其负载均衡功能,这也成了很多公司选择它的主要原因。本文将从源码的角度介绍nginx的内置负载均衡策略和扩展负载均衡策略,以实际的工业生产为案例,对比各负载均衡策略,为nginx使用者提供参考。

#user  nobody;
#启动进程,通常设置成和cpu的数量相等,这里我设置了4个进程
worker_processes  4;
 
#设置全局错误日志及PID文件
error_log  logs/error.log;
error_log  logs/error.log  notice;
error_log  logs/error.log  info;
 
#pid        logs/nginx.pid;
 
 
#工作模式及连接数上线
events {
    use epoll;#epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
    worker_connections  1024;#单个后台worker process进程的最大并发连接数
}
 
#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
    include       mime.types;#设定mime类型,类型由mime.type文件定义
    default_type  application/octet-stream;
 
 
    #设定日志格式
    access_log  logs/access.log;
    error_log  logs/error.log;
    sendfile        on;#指令指定nginx 是否调用sendfile函数(zero copy 方式)来输出文件,对于普通应用,必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.  
    #tcp_nopush     on;
 
    #链接超时时间
    keepalive_timeout  200;
    client_max_body_size 128m;
 
    #开启gzip压缩  
    gzip  on;  
    gzip_disable "MSIE [1-6]\.(?!.*SV1)"; 
     
    #设定请求缓冲  
    client_header_buffer_size    1k;  
    large_client_header_buffers  4 4k;
 
    #设定负载均衡的服务器列表,  
    upstream mysvr { 
    #weigth参数表示权值,权值越高被分配到的几率越大  
    #本机上的Squid开启3128端口  
       server 192.168.8.1:3128 weight=5;  
       server 192.168.8.2:80  weight=1;  
       server 192.168.8.3:80  weight=6;  
    }  
 
 
    server {
        listen       80;#侦听80端口
        server_name  www.xxx.com;#定义试用www.xxx.com访问
    root /web/dplay;#定义目录根路径
    ssi on; 
    ssi_silent_errors on;
    ssi_types text/shtml;
        charset utf-8;
         
    #设定本虚拟主机的访问日志和错误日志 
    access_log  logs/xxx.access.log;
        error_log  logs/xxx.error.log;
         
    #图片文件,nginx自己处理
    location ~* \.(jpg|jpeg|gif|png|ico|swf)$ {
                root /root/htdocs; #定义服务器的默认网站根目录位置  
                access_log off;
        #过期5小时,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。  
                expires 5h;
    }
         
    #静态文件,nginx自己处理  
    location ~* \.(css|js|jpg|jpeg|gif|png|ico|swf|html|htm|shtml)$ {
        root /website/dplay;
        access_log off;
        if (-f $request_filename) {
            expires 2h;
            break;
        }
    }  
         
    #转发
        location / {
                proxy_pass  http://mysvr ;#请求转向mysvr 定义的服务器列表  
                proxy_set_header Host $http_host;#设置请求头
                proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Real-IP        $remote_addr;
                proxy_set_header   REMOTE-HOST        $remote_addr;
            proxy_redirect default;
            client_max_body_size 10m;    #允许客户端请求的最大单文件字节数  
                client_body_buffer_size 128k;  #缓冲区代理缓冲用户端请求的最大字节数,  
                proxy_connect_timeout 90;  #nginx跟后端服务器连接超时时间(代理连接超时)  
                proxy_send_timeout 90;        #后端服务器数据回传时间(代理发送超时)  
                proxy_read_timeout 90;         #连接成功后,后端服务器响应时间(代理接收超时)  
                proxy_buffer_size 4k;             #设置代理服务器(nginx)保存用户头信息的缓冲区大小  
                proxy_buffers 4 32k;               #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置  
                proxy_busy_buffers_size 64k;    #高负荷下缓冲大小(proxy_buffers*2)  
                proxy_temp_file_write_size 64k;  #设定缓存文件夹大小,大于这个值,将从upstream服务器传  
 
        }
     
    # 定义错误提示页面  
        error_page   500 502 503 504 /50x.html;   
            location = /50x.html {  
            root   /root;  
        } 
 
    #PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI默认配置.  
        location ~ \.php$ {  
            root /root;  
            fastcgi_pass 127.0.0.1:9000;  
            fastcgi_index index.php;  
            fastcgi_param SCRIPT_FILENAME /home/www/www$fastcgi_script_name;  
            include fastcgi_params;  
        } 
 
        #禁止访问 .htxxx 文件  
        location ~ /\.file/ {  
           deny all;  
        }  
 
    }
 
}


标签: ngins的配置 举报

收藏 0人收藏
给个赞0人点赞

笔记作者:Quinn

笔记链接:

原创声明:此笔记被 Quinn 标注为原创笔记,未经作者同意转载必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。

评论
0 /300