美文网首页
NGINX+TOMCAT实现负载均衡,反向代理,亲测可用,性能优

NGINX+TOMCAT实现负载均衡,反向代理,亲测可用,性能优

作者: 小佳佳K3 | 来源:发表于2020-07-24 17:31 被阅读0次

    例子说明:由一个nginx服务器反向代理两个tomcat服务器,随机访问两个tomcat实现负载均衡。

    nginx.conf配置

    #user  nobody;
    #worker_processes  1;
    worker_rlimit_nofile 10240;
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    #pid        logs/nginx.pid;
    events {
        worker_connections 10240;
    }
    #这里是http请求的配置
    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        on;
        #tcp_nopush     on;
        #keepalive_timeout  0;
        keepalive_timeout  65;
            client_header_buffer_size 4k;
        open_file_cache max=10240 inactive=20s;
        open_file_cache_valid 30s;
        open_file_cache_min_uses 1;
        #gzip  on;
        gzip  on; 
         gzip_http_version 1.1; 
         gzip_vary on; 
         gzip_comp_level 6; 
         gzip_proxied any; 
         gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/x-httpd-php image/jpeg image/gif image/png; 
         gzip_buffers 16 8k; 
         gzip_disable "MSIE [1-6]\.";
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_buffer_size 64k;
        fastcgi_buffers 4 64k;
        fastcgi_busy_buffers_size 128k;
        fastcgi_temp_file_write_size 128k;
        upstream tomcats{
        #这里填写要代理的服务器ip地址,因为我是在同一个服务器上,所以写了127.0.0.1,后面跟上对应tomcat服务器的端口
        server 127.0.0.1:8080;
        server 127.0.0.1:8081;
        }
        server {
        listen 80;
        server_name  这里填写当前服务器的域名;
            location / {
            root   html;
                index  index.html index.htm;
                #proxy_pass http://tomcats;
            rewrite ^(.*)$  https://$host$1 permanent;
            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;
                proxy_set_header X-Forwarded-Proto $scheme;
            }
            #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;
            #}
            # proxy the PHP scripts to Apache listening on 127.0.0.1:80
            #
            #location ~ \.php$ {
            #    proxy_pass   http://127.0.0.1;
            #}
            # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
            #
            #location ~ \.php$ {
            #    root           html;
            #    fastcgi_pass   127.0.0.1:9000;
            #    fastcgi_index  index.php;
            #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            #    include        fastcgi_params;
            #}
            # 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;
        #    }
        #}
        #这里是https请求配置
        # HTTPS server
        server {
            listen       443 ssl;
            server_name  www..ycdjmap.com;
            ssl on;
            #密钥文件pem地址路径,当前在nginx服务器文件夹内
            ssl_certificate     a.pem;
             #密钥文件key地址路径,当前在nginx服务器文件夹内
            ssl_certificate_key  a.key;
            ssl_session_timeout 5m;
            ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
            ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
            ssl_prefer_server_ciphers on;
            location / {
                proxy_set_header Host $http_host;
                proxy_set_header X-Forwarded-Proto https;
                proxy_redirect off;
                proxy_connect_timeout        240;
                proxy_send_timeout           240;
                proxy_read_timeout           240;
                proxy_pass     http://tomcats;
           }
        }
    }
    

    tomcat配置

    context.xml文件

    <?xml version='1.0' encoding='utf-8'?>
    <!--
      Licensed to the Apache Software Foundation (ASF) under one or more
      contributor license agreements.  See the NOTICE file distributed with
      this work for additional information regarding copyright ownership.
      The ASF licenses this file to You under the Apache License, Version 2.0
      (the "License"); you may not use this file except in compliance with
      the License.  You may obtain a copy of the License at
    
      http://www.apache.org/licenses/LICENSE-2.0
    
      Unless required by applicable law or agreed to in writing, software
      distributed under the License is distributed on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      See the License for the specific language governing permissions and
      limitations under the License.
    -->
    <!-- The contents of this file will be loaded for each web application -->
    <Context>
        <!-- Default set of monitored resources -->
        <WatchedResource>WEB-INF/web.xml</WatchedResource>  
        <!-- Uncomment this to disable session persistence across Tomcat restarts -->
        <!--
        <Manager pathname="" />
        -->
        <!-- Uncomment this to enable Comet connection tacking (provides events
             on session expiration as well as webapp lifecycle) -->
        <!--
        <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
        -->
        # 这里是连接池
        <Resource name="jdbc/mapdb" auth="Container" type="javax.sql.DataSource" maxActive="1000" maxIdle="300" 
                maxWait="10000" username="root" password="root" driverClassName="com.mysql.jdbc.Driver" 
                url="jdbc:mysql://localhost:3306/mapdb?useUnicode=true&amp;characterEncoding=utf-8&amp;connectTimeout=10000&amp;socketTimeoutsocket=10000&amp;autoReconnect=true&amp;failOverReadOnly=false"/>  
    </Context>
    

    server.xml文件

    <?xml version='1.0' encoding='utf-8'?>
    <!--
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    (the "License"); you may not use this file except in compliance with
    the License.  You may obtain a copy of the License at
    
    http://www.apache.org/licenses/LICENSE-2.0
    
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
    -->
    
    <Server port="8006" shutdown="SHUTDOWN">
        <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
    
        <Listener className="org.apache.catalina.core.JasperListener" />
    
        <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
    
        <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
        <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
    
        <GlobalNamingResources>     
            <Resource name="UserDatabase" auth="Container"
            type="org.apache.catalina.UserDatabase"
            description="User database that can be updated and saved"
            factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
            pathname="conf/tomcat-users.xml" />
        </GlobalNamingResources>
    
        <Service name="Catalina">
        #设置端口,优化请求
        <Connector executor="tomcatThreadPool" port="8081" protocol="HTTP/1.1"
                connectionTimeout="20000"
                maxThreads="150"
                minSpareThreads="25"
                maxSpareThreads="75"
                redirectPort="8445"
                scheme="https"
                proxyPort="443"
                acceptCount="200"
                disableUploadTimeout="true"
                maxHttpHeaderSize="81920"
                enableLookups="false" 
                URIEncoding="UTF-8"/>
    
            <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" 
                    maxThreads="500" minSpareThreads="20" maxIdleTime="60000" />
    
            <Engine name="Catalina" defaultHost="www.ycdjmap.com">
    
                <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
                <Manager className="org.apache.catalina.ha.session.DeltaManager"
                    expireSessionsOnShutdown="false"
                    notifyListenersOnReplication="true"/>
                <Channel className="org.apache.catalina.tribes.group.GroupChannel">
    
                <Membership className="org.apache.catalina.tribes.membership.McastService"
                    address="228.0.0.4"
                    port="45564"
                    frequency="500"
                    dropTime="3000"/>
                    <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                    address="auto"
                    port="4000"
                    autoBind="100"
                    selectorTimeout="5000"
                    maxThreads="6"/>
                    <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
                        <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
                    </Sender>
                    
                    <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
    
                    <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
    
                </Channel>
                <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
                    filter=""/>
    
                <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
    
                <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
                    tempDir="/tmp/war-temp/"
    
                    deployDir="/tmp/war-deploy/"
    
                    watchDir="/tmp/war-listen/"
                    watchEnabled="false"/>
                <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
    
                <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
    
            </Cluster>
            <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                resourceName="UserDatabase"/>
            <Host name="www.ycdjmap.com"  appBase="webapps"
                unpackWARs="true" autoDeploy="true"
                xmlValidation="false" xmlNamespaceAware="false">
                <Context path="" docBase="C:\apache-tomcat-6.0.45-2\webapps\openIndex" reloadable="true"/>
            </Host>
            </Engine>
        </Service>
    </Server>
    
    

    相关文章

      网友评论

          本文标题:NGINX+TOMCAT实现负载均衡,反向代理,亲测可用,性能优

          本文链接:https://www.haomeiwen.com/subject/xtlslktx.html