nginx配置

如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用。具体配置过程如下:

 

    1. 在http节点下,添加upstream节点。

 

1
2
3
4
upstream favtomcat {
        server 10.0.6.108:7080;
        server 10.0.0.85:8980;
}

 

   2.  将server节点下的location节点中的proxy_pass配置为:http:// + upstream名称,即“

http://favtomcat”.

 

1
2
3
4
5
location / {
             root   html;
             index  index.html index.htm;
             proxy_pass http://favtomcat;
}

 

    3.  现在负载均衡初步完成了。upstream按照轮询(默认)方式进行负载,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。虽然这种方式简便、成本低廉。但缺点是:可靠性低和负载分配不均衡。适用于图片服务器集群和纯静态页面服务器集群。

 

    除此之外,upstream还有其它的分配策略,分别如下:

 

    weight(权重)

 

    指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。如下所示,10.0.0.88的访问比率要比10.0.0.77的访问比率高一倍。

 

1
2
3
4
upstream favtomcat{
       server 10.0.0.77 weight=5;
       server 10.0.0.88 weight=10;
}

 

    ip_hash(访问ip)

 

    每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

 

1
2
3
4
5
upstream favresin{
       ip_hash;
       server 10.0.0.10:8080;
       server 10.0.0.11:8080;
}

 

    fair(第三方)

 

    按后端服务器的响应时间来分配请求,响应时间短的优先分配。与weight分配策略类似。

 

1
2
3
4
5
upstream favresin{     
       server 10.0.0.10:8080;
       server 10.0.0.11:8080;
       fair;
}

 

    url_hash(第三方)

 

    按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

 

    注意:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法。

 

1
2
3
4
5
6
upstream resinserver{
       server 10.0.0.10:7777;
       server 10.0.0.11:8888;
       hash $request_uri;
       hash_method crc32;
}

 

    upstream还可以为每个设备设置状态值,这些状态值的含义分别如下:

    

    down 表示单前的server暂时不参与负载.

 

    weight 默认为1.weight越大,负载的权重就越大。

 

    max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误.

 

    fail_timeout : max_fails次失败后,暂停的时间。

 

    backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

 

1
2
3
4
5
6
7
upstream bakend{ #定义负载均衡设备的Ip及设备状态
       ip_hash;
       server 10.0.0.11:9090 down;
       server 10.0.0.11:8080 weight=2;
       server 10.0.0.11:6060;
       server 10.0.0.11:7070 backup;
}

 

 配置文件样例 nginx.conf

 

#user  nobody;
worker_processes  4;

error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        logs/nginx.pid;


events {
	use epoll;
	worker_connections  4096;
}


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;

	#控制并发
	#limit_zone slimits $binary_remote_addr 5m;	
	#limit_conn slimits 5;

	#隐藏版本号
 	server_tokens off;
	#服务器名字的hash表大小
	server_names_hash_bucket_size 128; 	
	client_max_body_size   10m;
    	client_body_buffer_size   128k;
	#上传文件大小限制
	client_header_buffer_size 32k;
	#设定请求缓
	large_client_header_buffers 4 64k; 	
	#开启高效文件传输模式
	sendfile on; 
	#开启目录列表访问,合适下载服务器,默认关闭。
	autoindex off; 
	#防止网络阻塞
	tcp_nopush on; 
	#防止网络阻塞
	tcp_nodelay on; 

    	#keepalive_timeout  0;
    	keepalive_timeout  65;
   
	#开启gzip压缩功能	
	gzip  on;
	#最小压缩文件大小
	gzip_min_length 1k; 
	#压缩缓冲区
	gzip_buffers 4 16k; 
	#压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
	gzip_http_version 1.0; 
	#压缩等级
	gzip_comp_level 2; 
	#压缩类型,默认就已经包含textml
	gzip_types text/plain application/x-javascript text/css application/xml;   
	gzip_vary on;	
  
	# http_proxy 设置    	
    	proxy_connect_timeout   75;
    	proxy_send_timeout   75;
    	proxy_read_timeout   75;
    	proxy_buffer_size   4k;
    	proxy_buffers   4 32k;
    	proxy_busy_buffers_size   64k;
    	proxy_temp_file_write_size  64k;
    	proxy_temp_path   /usr/local/nginx/proxy_temp 1 2;

	#服务器集群配置
	 upstream app_site {
    		ip_hash;
		server 10.173.196.19:8080  max_fails=2 fail_timeout=30s;
		server 10.173.196.19:8081  max_fails=2 fail_timeout=30s;							
   	 }

    server {
        listen       80;
        server_name  www.sulaishi.com;
        root /bps-webapp;

        access_log  logs/host.access.log  main;

       #对 "/" 启用反向代理
        location / {
              root   /bps-webapp;
	index index.jsp;
	#负载均衡服务器列表
	proxy_pass http://app_site;
	proxy_redirect off;
	proxy_set_header    X-Real-IP           $remote_addr;
  	proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
  	proxy_set_header    Host                $http_host;
  	proxy_connect_timeout 1; 
  	proxy_send_timeout 30; 
  	proxy_read_timeout 60;           
	proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
	
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

       #location  ~* /download/ {  
         #   root  /bps-webapp;  
        #}

       #图片缓存时间设置
       #location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
       #{
#	root  /bps-webapp;
#	expires 10d;
  #      }


	
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }



    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}



}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值