Nginx+Tomcat集群配置讲解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq877507054/article/details/69547590

目的:实现高性能负载均衡的Tomcat集群


在linux上安装好niginx后进入conf文件夹下编辑nginx.conf文件,文件配置讲解如下


<!--nginx进程数,建议设置为等于CPU总核心数-->
worker_processes  8;
<!--错误日志存放路径 -->
error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
<!--指定pid存放文件-->
pid        logs/nginx.pid;


events {
	<!--单个进程最大连接数,那么该服务器的最大连接数=连接数*进程数-->
    worker_connections  1024;
}




<!-----------------------------------------设定http服务器,利用它的反向代理功能提供负载均衡支持------------------------------>
http {
	 <!--设定mime类型-->
    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;

	<!--开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。-->   
    sendfile        on;  

	<!--长连接超时时间,单位是秒-->  
    keepalive_timeout  65;
	
	<!--启用Gizp压缩 访问网站的时候nginx检查有木有压缩文件,提高网站性能-->  
    gzip  on;
	
	
	
	
	<!--#################################################以下为核心配置####################################--> 
	<!--#################################################服务器的集群配置#################################-->  
	<!--website为集群的服务器列表的名字, website和proxy_pass保持一样 ,最终请求会被转发到这里来-->  
    upstream website 
    {	
		#ip_hash;<!--可选,根据来源IP方式选择web服务器,省略的话按默认的轮循方式选择web服务器,解决Session每次访问页面都不一样,让用户的请求只在一个服务上使用,在同一个server中保持一个稳定的session-->
		
        server 192.168.27:8080  weight=1
		server 192.168.28:8080  weight=2
	<!--server:配置tomcat服务器请求的地址,2台Tomcat服务就配置2个server,可以用weight参数设置权重,即访问的几率,server后的ip即使tomcat的ip,weight表示权重,weight越大,对应服务器被访问的概率越大,若是相等,几个服务器轮流被访问;假如我们启动tomcat1(27服务器),tomcat2(28服务器),nginx(27服务器),在浏览器中输入192.168.27(niginx所在的服务器),然后刷新,这时我们会看到tomcat1和tomcat2的页面交替显示,这就表示nginx已经负载了两个tomcat,可以将请求转发到不同的tomcat。-->
	
	<!--nginx 的upstream目前支持的几种方式的分配1.轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。2.weight:指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 3.ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,ip_hash其实上不能够完全解决ip问题,因为有很多用户的ip随时都可能在变动,ip_hash这个名字你就知道,是通过hash散列的原理将用户的ip散列到指定的tomcat上,自然而然的想当然的解决了session问题,最好是用memcached存取来实现session共享-->
		
    }


	
	
	
	
	<!--#################################################当前的nginx的配置#############################--> 
	
	server {
        listen       80; <!--监听端口,一般都为http端口:80;-->
		
		<!--当前服务的域名,域名可以有多个,用空格隔开:例如 server_name www.sohu.com baidu.com;-->
        server_name  localhost www.cgfytop.com; 
		
		location / {
		
		<!--设置一个代理,请求转向自定义的服务器列表,这里我们将请求都转向标识为http://website;的负载均衡服务器列表;如果我们访问localhost:8,或者www.cgfytop.com:80,则交给名称为website的nginx集群来处理-->
		proxy_pass http://website;
		
		<!--proxy_set_header设置客户端ip和端口等信息-->
       	proxy_set_header     Host               $http_host;  
        proxy_set_header     X-Real-IP          $remote_addr;
        proxy_set_header     X-Forwarded-For    $proxy_add_x_forwarded_for;
		
<!--下面的配置可以解决2个Tomcat服务器集群,当一台服务器挂掉(宕机)后,请求变得很慢的问题,(Tomcat集群一台服务器挂掉后请求变慢解决方案)-->
        proxy_connect_timeout       1;  
        proxy_read_timeout          1;  
        proxy_send_timeout          1;   
       }
	   
	   
	   
	   
	   error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
	   
	   
	   
	   
	   
		<!--此为默认配置,需修改成以上的配置-->
		<!--location/{}:对什么样的后缀进行负载均衡请求,假如我们要对所有的aspx后缀的文件进行负载均衡时,可写成:location ~ .*\.aspx$ {}-->

	    <!--location / {root   html;index  index.html index.htm;}-->
	

	}
	
	<!----------------------------------------设定http服务器结束--------------------------------------------->
		
		
	<!--include /usr/local/nginx/conf/conf.d/*.conf; include可以模块化配置文件-->


}

这段脚本放在server{}里可判断用户请求的具体设备,是手机端还算是电脑端

    set $mobile_rewrite 0;

if ($http_user_agent ~* "(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od|ad)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|arm|KFAPWI") {
  set $mobile_rewrite 1;
}

if ($http_user_agent ~* "^(1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-)") {
  set $mobile_rewrite 1;
}
 

proxy的详细配置

 proxy_redirect          off;
    proxy_set_header        Host $host;
    proxy_set_header        X-Real-IP $remote_addr; #获取真实IP
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for; #获取代理者的真实ip
    proxy_connect_timeout   30s;
    proxy_send_timeout      60s;
    proxy_read_timeout      150s;
    proxy_buffer_size       16k;
    proxy_buffers           8 64k;
    proxy_busy_buffers_size 128k;
    proxy_temp_file_write_size 128k;
    proxy_ignore_client_abort on;
    #proxy_http_version 1.1;
    #proxy_set_header Connection "";
    #proxy_next_upstream off;
    proxy_next_upstream error invalid_header http_500 http_502 http_503 http_504;

gzip详细配置

gzip  on;
    gzip_http_version 1.1;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_comp_level  2;
    gzip_types       text/plain application/x-javascript text/css text/xml application/xml text/javascript application/json;
    gzip_disable "MSIE [1-6]\.";
    gzip_vary  on;
 

设定请求缓冲

      #设定请求缓冲    
      server_names_hash_bucket_size 128;
      client_header_buffer_size 32k;
      large_client_header_buffers 4 32k;
      client_max_body_size 8m;




参考的典例文档

添加Nginx对于静态文件的缓存配置
nginx的安装配置
nginx的win系统下的部署
浅谈web应用的负载均衡、集群、高可用(HA)解决方案
nginx+tomcat+memcached负载均衡集群搭建1
nginx+tomcat+memcached负载均衡集群搭建2
tomcat与nginx的配置1
tomcat与nginx的配置2




猜你喜欢

转载自blog.csdn.net/qq877507054/article/details/69547590
今日推荐