Nginx+Tomcat集群与负载均衡示例,配置webservice,配置Tomcat,配置Nginx

实现的目标:使用一个Nginx,搭建两个Tomcat(部署的项目含有webservice接口),通过Nginx配置的地址,访问不同tomcat中项目的webservice接口,实现负载功能。


软件版本

Nginx:nginx-1.10.3

Tomcat:apache-tomcat-6.0.41(准备2个,端口要改下,参考上一篇文章)

项目

B/S项目,含有webservice接口;


配置如下:

Nginx配置(F:/nginx-1.10.3/conf/nginx.conf)

#user  nobody;

# multiple workers works !
# 工作进程数:这个数值要根据服务器CPU核心数来配置,如6核12线程的cpu可以配置为6或12。
# 低配机器 6核6线程
worker_processes  2;

#错误日志存放路径
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
error_log  logs/error.log  error;
#error_log  logs/debug.log  debug;

#pid        logs/nginx.pid;

events {
	#设置单个进程同时打开的最大连接数,这个值设置大些能接受较多的连接,当然这需要cpu和内存支持哦~~  
	# worker_connections  32768;
	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;

    sendfile        off;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
		
		server_names_hash_bucket_size 128;
		
    #gzip  on;
		
		#服务器的集群  
    upstream  dzfp {  #服务器集群名字   
    		server    192.168.4.24:18080  weight=1 max_fails=1 fail_timeout=100;#服务器配置   weight是权重的意思,权重越大,分配的概率越大。  
        server    192.168.4.24:28080  weight=1 max_fails=1 fail_timeout=100;  
    } 
		
    server {
        listen       10000;#监听80端口,可以改成其他端口  
        server_name  localhost;##############   当前服务的域名  

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location /{
            #root   html;
            #index  index.html index.htm;
            proxy_pass http://dzfp;  
            proxy_redirect default;
            #使用$host变量,它的值相当于服务器的主机名(如果使用域名访问,则该值为域名;如果使用IP访问,则该值为IP)。
            #此外可以将主机名和被代理服务器的端口一起传递  $host:$proxy_port,在设置webservice一定要设置$host:$proxy_port,不然会找不到端口          
            proxy_set_header Host $host:$server_port;
						proxy_set_header X-Real-IP $remote_addr;
						proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
						proxy_connect_timeout 10;
						proxy_read_timeout 60;
						proxy_send_timeout 60;	
			
        }

        #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;
        }
    }
}
Tomcat配置如下(F:/apache-tomcat-6.0.41-1/conf/server.xml):


参数相关说明(仅供参考)

所有的Connector提供的配置项(不完全版scheme, isSecure, xpoweredBy, useIPVHosts ):
. allowTrace 如果需要服务器能够处理用户的HAED/TRACE请求,这个值应该设置为true,默认值是false;
. emptySessionPath 如果设置为true,所有session,cookie的path将会被设置为/,这种设置通常是在portlet中比较有用,默认值是false;
. enableLookups 如果需要在调用request.getRemoteHost()方法时获取到客户端的机器名,则需要配置为true,如果配置为false,将会跳过DNS查询直接返回客户端机器的IP地址,通常为了提高性能,将此值设置为false,默认值是true;
. maxPostSize POST方法能够提交的数据的最大大小,如果没有声明或者设置为小于等于0,则表示POST提交的数据大小是不限制的,默认值是2Megabytes.
. protocol 设置处理请求的协议,默认是HTTP/1.1,即org.apache.coyote.http11.Http11Protocol,此外还 支持的协议有:org.apache.coyote.http11.Http11NioProtocol(通过NIO处理用户请求,可以提高系统性能), org.apache.coyote.http11.HttpAprProtocol。
. proxyName/proxyPort 如果Web服务器使用了代理服务器,配置此参数意味着在调用request.getServerName的时候将会获取代理服务器的名称,getServerPort()将会返回proxyPort。
. redirectPort 如果Connector的配置是支持非SSL的请求,当一个SSL请求到来时,服务器会自动的将请求重定位到redirectPort。
. URIEncoding URI字节转化成String的时候的编码方式,默认为ISO-8859-1,如果页面需要支持中文,一般可以将其设置为UTF-8或者GBK,GB2312。
. useBodyEncodingForURI 如果设置为true,则会根据页面的编码决定URI的编码方式,默认是false。

Http/1.1 Connector提供的配置项:
. acceptCount 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,默认值是100。
. address 如果Tomcat所在的主机有多个IP,这个值声明了用于监听HTTP请求的IP地址。
. bufferSize Connector创建的输入流的大小,默认值是2048 bytes,提高这个值可以提升性能,增加内存消耗。
. compressableMimeType 使用HTTP压缩的MIME类型,使用逗号分割,默认值是 text/html,text/xml,text/plain。
. compression 为了节省带宽,可以将这个值设置为on,从而启用HTTP/1.1 GZIP压缩。off关闭压缩,forces强制使用压缩,默认值是off。
. connectionTimeout Connector接受一个连接后等待的时间(milliseconds),默认值是60000。
. executor 表示Tomcat组件之间共享的线程池,在Service节点下,Connector节点前可以配置一个Executor节点用于管理线程,这个属性的值是配置的Executor的名称,如果应用了此属性且executor存在,那么任何其他的关于thread的配置将会被忽略。
. keepAliveTimeout 在Connector关闭连接前,Connector为另外一个请求Keep Alive所等待的微妙数,默认值和 connectionTimeout 一样。
. maxHttpHeaderSize HTTP请求、响应头信息的最大大小,默认是8192bytes。
. maxKeepAliveRequests HTTP/1.0 Keep Alive 和HTTP/1.1 Keep Alive / Pipeline的最大请求数目,如果设置为1,将会禁用掉Keep Alive和Pipeline,如果设置为小于0的数,Keep Alive的最大请求数将没有限制。默认为100。
. maxThreads 用于处理用户请求的最大线程数,默认值是200。可以根据机器的时期性能和内存大小调整,一般可以在400-500。最大可以在800左右
. noCompressionUserAgents: 设置不使用HTTP GZIP压缩的客户端,使用逗号分隔,在某些浏览器不支持压缩的时候可以使用此属性。
. port Connector监听的端口。
. restrictedUserAgents 设置不使用Keep Alive的客户端代理名称,使用逗号分割,默认值是空字符串。
. server 覆盖HTTP响应的serve头信息,如果不设置的话,默认值是 Apache-Coyote/1.1。一般情况下不需要关注此属性。
. socketBuffer Socket输出流缓冲区的大小,默认是9000bytes,如果设置为小于0的值,则表示不使用此缓冲区。
. tcpNoDelay 默认值是true,设置为true可以提高系统性能。

补充属性:
. threadPriority 请求处理线程的优先级,默认的优先级是NORMAL。
. minSpareThreads Tomcat初始化时创建的线程数。默认值4。 
. connnectionTimeout 网络连接超时,默认值20000,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。(本系统由于与后台系统接口超时时间较长,使用设置为60000)
. maxIdleTime 空闲线程被关闭之前的毫秒数。默认值是60000。


你可能感兴趣的:(java-nginx)