nginx负载均衡

梦之旅 2014-01-05

一.主要参数配置详解
1.worker_processes  8; 
            #这个数字需要跟硬件中CPU的核数对应不能大于CPU的核数。
2.error_log  logs/error.log  info;
            #设置nginx在运行时输出的日志(调试阶段开启;运行阶段关闭)
3.worker_connections  1024;
4.#nginx支持的最大连接数目
          #配置负载均衡 如果有多个Tomcat跑同一个工程在这个地方加入#Tomcat的IP地址口
           upstream YNedut5 {
                     server 127.0.0.1:9090 down;
                      server 127.0.0.1:8080 weight=2;
                      server 127.0.0.1:6060;
                      server 127.0.0.1:7070 backup;
                 }
           # down 表示单前的server暂时不参与负载
           #weight 默认为1.weight越大,负载的权重就越大。
           # backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。
所以这台机器压力会最轻。   
5.开启压缩功能节约宽带
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; 
6.开启限制连接和限速
 location / {  
        limit_conn one 1;   #是限制每个IP 只能发起一个连接。
        limit_rate 100k;   #是对每个连接限速100k. 注意,这里是对连接限速,而不是对IP
#限速。(一个ip 可能存在多个连接)
}
7.开启nginx的监控
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
8.反向代理全配置
            proxy_pass http://YNedut5;
            #以下这些代码可以放到一个文件中(*.conf)用include包含到server中
            #example: include /usr/local/nginx/conf/proxy.conf;
            proxy_redirect off; 
            proxy_set_header Host $host;  #重要必须添加
            proxy_set_header X-Real-IP $remote_addr;
            client_max_body_size 10m;
            client_body_buffer_size 128k; 
            proxy_connect_timeout 90;  #重要可以提高连接性能(主要表现tomcat负载均衡)
            proxy_send_timeout 90;
            proxy_read_timeout 90; 
      
            proxy_buffer_size 4k; 
            proxy_buffers 4 32k; 
            proxy_busy_buffers_size 64k;
            proxy_temp_file_write_size 64k;
          
            #开启页面缓存
            proxy_store on;
proxy_store_access   user:rw  group:rw  all:r;
proxy_temp_path /data/nginx_cache/proxy_temp 1 2;#缓存存放的位置
            #目的是为了用户输入的地址最后是否带\
            if (-d $request_filename){
                        rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
                }
9.控制禁止访问nginx中的某个目录
Location  ~^/WEB-INF {
deny all;
}
二.配置文件主要内容
 #user  nobody;
worker_processes  1;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
error_log  logs/error.log  info;
#pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    #access_log  logs/access.log  main;
    #这里指定多个源服务器,ip:端口,80端口的话可写可不写(负载均衡)
 
    upstream YNedut5 {
                          server 127.0.0.1:8080;
                       }
     upstream resources {
                          server 127.0.0.1:8060;
                       }
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;
    server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
       
        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; 
       
        location / { 
                   root   html;
                   index  index.html index.htm;   
                  }          

      #需要代理的web工程
       location ~ ^/webproject{ 
          
            proxy_pass http://YNedut5;
            proxy_redirect off; 
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            client_max_body_size 10m;
            client_body_buffer_size 128k; 
            proxy_connect_timeout 90; 
            proxy_send_timeout 90;
            proxy_read_timeout 90; 
      
            proxy_buffer_size 4k; 
            proxy_buffers 4 32k; 
            proxy_busy_buffers_size 64k;
            proxy_temp_file_write_size 64k;
            #目的是为了用户输入的地址最后是否带\
            if (-d $request_filename){
                        rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
                }#end if
        }
       
        #开启nginx的监控
        location ~^/nginx_status {
                                stub_status on;
                                access_log off;
                                allow 127.0.0.1;
                               deny all;
                          }
           error_page  404              /404.html;
           error_page   500 502 503 504  /50x.html;
         }#end server
     }#end http

相关推荐