• 整合Tomcat和Nginx实现动静态负载均衡


    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6386135.html

        Nginx与tomcat整合可以实现服务器的负载均衡。

        在用户的请求发往服务器进行处理时,如果请求太多处理不了,容易造成服务器阻塞、响应慢等情况。这时,如果我们可以有多台服务器的话,就可以实现把请求派发给各台服务器进行处理,这个分发的过程就是由Nginx完成的。同样,由于Tomcat主要用来处理动态的内容,比如jsp文件。那么静态的html/图片等资源就可以交给Nginx来处理,期间也用到了分发。对于有多台服务器时,用一台服务器装Nginx作为代理服务器,把所有请求汇集到这里进行分发到其他服务器。而对于一台服务器实现动静态分离时,则需要在一台服务器上同时搭建Nignx和tomcat,并进行整合。其原理都是一样的,配置的文件也几乎一样。这里,我们只讲在一台服务器上的整合。

         一:安装Nignx

    sudo apt-get install nginx

         二:配置nginx.conf文件

        vi 打开nginx文件后,找到http{}节点,在里面添加:

    upstream 你的域名{  
        server 你的云主机IP:80;  
         }  

         然后添加一个server。如果是配置多台服务器,则在上面添加多个upstream,下面对应多个server进行分发。这里我只有一个服务器,所以配置一个:

     server {
    
            #侦听80端口
    
                listen       80;
    
                #定义使用域名访问
    
                server_name  www.xx.com;
    
                #设定本虚拟主机的访问日志
    
                access_log  logs/www.xx.com.access.log  main;
    
    
            # 定义错误提示页面
    
            error_page   500 502 503 504 /50x.html;
    
                location = /50x.html {
    
                root   /root;
    
            }
    
          
    
           location ~ .*.[jsp|do|action]$ { #所有jsp页面以及do/action请求均交由   tomcat处理
           index index.jsp;
            proxy_pass http://你的域名:80; #转向tomcat处理
        }
    
           location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ { #设定访问静态文件直接读取,不经过tomcat。过期时间30天
          expires      30d;
         }
         location ~ .*.(js|css)?$ {
        expires      1h;
        }
    
            #设定查看Nginx状态的地址
    
            location /NginxStatus {
    
                stub_status            on;
    
                access_log              on;
    
                auth_basic              "NginxStatus";
    
                auth_basic_user_file  conf/htpasswd;
    
            }
         }

         三:整合tomcat

    sudo vi /etc/nginx/conf.d/proxy.conf

         输入

    #!nginx (-) 
    # proxy.conf 
    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
    client_max_body_size    10m;
    client_body_buffer_size 128k;
    proxy_connect_timeout   90;
    proxy_send_timeout      90;
    proxy_read_timeout      90;
    proxy_buffer_size       4k;
    proxy_buffers           4 32k;
    proxy_busy_buffers_size 64k;
    proxy_temp_file_write_size 64k;

        按Esc退出编辑模式,输入 :wq  保存并退出。

        配置defalut文件:

    sudo vi /etc/nginx/sites-available/defalut

        找到server{}添加:

    #动态交给tomcat
    location ~ .*.[jsp|do|action]$ { 
        index index.jsp;
        proxy_pass 你的域名:80;
    }
    #静态直接读取,不结果tomcat。过去时间30天
    location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ {
        expires      30d;
    }
    location ~ .*.(js|css)?$ {
        expires      1h;
    }

         保存并退出。

        四:测试。

        重启你的云主机。登录ubuntu后,分别启动nginx和tomcat。(注意:重新部署项目,或者每次关机重启后,都需要分别启动tomcat和nginx)!启动nginx:/etc/init.d/nginx 启动tomcat:bin目录下 ./startup.sh

        然后在浏览器分别输入  你的域名  以及    你的域名:80/index.jsp  ,发现都跳转到同一页面。说明整合成功~

  • 相关阅读:
    万字总结:学习MySQL优化原理,这一篇就够了!
    sql中自连接的使用
    SQL 优化原则
    Thumbnailator java图片压缩,加水印,批量生成缩略图
    java使用Thumbnailator处理图片
    Mysql优化原则_小表驱动大表IN和EXISTS的合理利用
    MySQL千万级多表关联SQL语句调优
    了解MySQL联表查询中的驱动表,优化查询,以小表驱动大表
    【explain】MySQL联表查询中的驱动表
    pyCharm最新2018激活码
  • 原文地址:https://www.cnblogs.com/ygj0930/p/6386135.html
Copyright © 2020-2023  润新知