nginx负载均衡配置

二,配置nginx实现负载均衡
   以我的nginx.conf为例
Xml代码  收藏代码
#user  nobody;  
worker_processes  1;  
  
error_log  logs/error.log;  
  
events {  
    worker_connections  1024;  
}  
  
  
http {  
    include       mime.types;  
    default_type  application/octet-stream;  
  
    sendfile        on;  
    keepalive_timeout  65;  
  
    #gzip  on;  
    upstream  www.docyeah.com   {  
              server   192.168.1.11:8080;  
              server   192.168.1.101:8080;  
    }  
    server {  
        listen       80;  
        server_name  www.docyeah.com;  
        charset utf-8;  
        location / {  
            root   html;  
            index  index.html index.htm;  
            proxy_pass        http://www.docyeah.com;  
            proxy_set_header  X-Real-IP  $remote_addr;  
            client_max_body_size  100m;  
        }  
  
  
        location ~ ^/(WEB-INF)/ {   
        deny all;   
        }   
  
        error_page   500 502 503 504  /50x.html;  
        location = /50x.html {  
            root   html;  
        }  
  
    }  
}  
 
将www.docyeah.com替换成你的域名
192.168.1.11和192.168.1.101替换成你服务器的IP
 
OK,已经完成。启动nginx即可。

nginx在配置upstream时,有两个参数: 
ip_hash(同一IP一直使用同一台server服务) 
weight(server的使用权重,数值越大,nginx分发的请求越多)

通过配合这两个参数,能粗糙地解决session共享的问题。 
对于一些不是太依赖session的应用,或者只有用户登录时保存,那么我认为可以用Cookies代替。 
即使真的要Session共享,我认为手动写代码保存到Memcached比为Tomcat加插件好,这样能获得更好的可控性。 
而且我不用Tomcat,用Resin,这个msm就用不上啦,不过我会按照我的思想实现session共享,呵呵,个人愚见!!

 

只是负载均衡的话,的确只要基于访问IP地址的分发策略就可以了。但这要就不能实现高可用。如果集群中的某台服务器挂掉,那这台服务器上的session用户都将丢失。

 

#Nginx所用用户和组,window下不指定  
#user  niumd niumd;  
  
#工作的子进程数量(通常等于CPU数量或者2倍于CPU)  
worker_processes  2;  
  
#错误日志存放路径  
#error_log  logs/error.log;  
#error_log  logs/error.log  notice;  
error_log  logs/error.log  info;  
  
#指定pid存放文件  
pid        logs/nginx.pid;  
  
events {  
    #使用网络IO模型linux建议epoll,FreeBSD建议采用kqueue,window下不指定。  
    #use epoll;  
      
    #允许最大连接数  
    worker_connections  2048;  
}  
  
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  off;  
    access_log  logs/access.log;  
  
    client_header_timeout  3m;  
    client_body_timeout    3m;  
    send_timeout           3m;  
   
    client_header_buffer_size    1k;  
    large_client_header_buffers  4 4k;  
  
    sendfile        on;  
    tcp_nopush      on;  
    tcp_nodelay     on;  
  
    #keepalive_timeout  75 20;  
  
    include    gzip.conf;  
    upstream localhost {  
      #根据ip计算将请求分配各那个后端tomcat,许多人误认为可以解决session问题,其实并不能。  
      #同一机器在多网情况下,路由切换,ip可能不同  
      #ip_hash;   
      server localhost:18081;  
      server localhost:18080;  
     }  
  
    server {  
            listen       80;  
            server_name  localhost;     
  
            location / {  
                    proxy_connect_timeout   3;  
                    proxy_send_timeout      30;  
                    proxy_read_timeout      30;  
                        proxy_pass http://localhost;  
            }  
              
   }  
}  

 

posted @ 2016-11-03 18:01  跨境电商杂货铺  阅读(221)  评论(0编辑  收藏  举报