转载请注明原文地址: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:;
}

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

 server {

        #侦听80端口

            listen       ;

            #定义使用域名访问

            server_name  www.xx.com;

            #设定本虚拟主机的访问日志

            access_log  logs/www.xx.com.access.log  main;

        # 定义错误提示页面

        error_page       /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 ;
proxy_send_timeout ;
proxy_read_timeout ;
proxy_buffer_size 4k;
proxy_buffers 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  ,发现都跳转到同一页面。说明整合成功~

整合Tomcat和Nginx实现动静态负载均衡的更多相关文章

  1. Nginx整合tomcat,实现反向代理和负载均衡

    1.Nginx与Tomcat整合,通过Nginx反向代理Tomcat. Nginx安装路径为:/usr/local//nginx 首先切换路径到:/usr/local//nginx/conf通过命令  ...

  2. tomcat结合nginx或apache做负载均衡及session绑定

    1.tomcat结合nginx做负载均衡,session绑定 nginx:192.168.223.136   tomcat:192.168.223.146:8081,192.168.223.146:8 ...

  3. 【Nginx】面试官:给我讲讲Nginx如何实现四层负载均衡?

    写在前面 这次又被问到Nginx四层负载均衡的问题了,别慌,我们一起来细细分析这个看似简单的问题. 如果文章对你有点帮助,请关注 冰河技术 微信公众号,点赞.在看.留言和转发,大家的四连是我持续创作的 ...

  4. 通过Nginx+tomcat+redis实现反向代理 、负载均衡及session同步

    一直对于负载均衡比较陌生,今天尝试着去了解了一下,并做了一个小的实验,对于这个概念有一些认识,在此做一个简单的总结 什么是负载均衡 负载均衡,英文 名称为Load Balance,指由多台服务器以对称 ...

  5. Nginx反向代理,负载均衡,redis session共享,keepalived高可用

    相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tomcat服务器两台,由nginx进行反向代理和负载均衡,此 ...

  6. nginx实现请求的负载均衡 + keepalived实现nginx的高可用

    前言 使用集群是网站解决高并发.海量数据问题的常用手段.当一台服务器的处理能力.存储空间不足时,不要企图去换更强大的服务器,对大型网站而言,不管多么强大的服务器,都满足不了网站持续增长的业务需求.这种 ...

  7. 使用nginx反向代理进行负载均衡

    在这里简单记录一下,我使用Nginx反向代理进行负载均衡,将请求发送到两台tomcat上. 首先解压两个tomcat,解压Nginx,一台tomcat配置可以不用动,但是我为了更方便只是将它的端口改为 ...

  8. 一篇文章搞定 Nginx 反向代理与负载均衡

    代理 要想弄明白反向代理,首先要知道啥是正向代理,要搞懂正向代理只需要知道啥是代理即可.代理其实就是一个中介,在不同事物或同一事物内部起到居间联系作用的环节.比如买票黄牛,房屋中介等等. 在互联网中代 ...

  9. Nginx 动静分离与负载均衡的实现

    一.前提 企业中,随着用户的增长,数据量也几乎成几何增长,数据越来越大,随之也就出现了各种应用的瓶颈问题. 问题出现了,我们就得想办法解决,一般网站环境,均会使用LAMP或者LNMP,而我们对于网站环 ...

随机推荐

  1. 使用Camera进行拍照 & 后台静默拍照的思路

    Android中的Camera可以用来进行自定义相机.取景框实时预览.拍照等操作.在5.0中,这个类不推荐使用了,新出了一个Camera2,那个东西没怎么研究过,反正一时半会用不到.本篇讲解的是如果用 ...

  2. ListView取消和自定义分割线的方法

    一.不显示分割线 XML android:footerDividersEnabled="false"即可. JAVA mListView.setDivider(null); 二.改 ...

  3. Material Designer的低版本兼容实现(七)—— Rectange Button

    矩形按钮是我们很常用的控件,让其拥有5.0动效必须自定义控件.本文讲解的控件是参考: https://github.com/shark0017/MaterialDesignLibrary 一.放入布局 ...

  4. mongodb分布式集群搭建手记

    一.架构简介 目标单机搭建mongodb分布式集群(副本集 + 分片集群),演示mongodb分布式集群的安装部署.简单操作. 说明在同一个vm启动由两个分片组成的分布式集群,每个分片都是一个PSS( ...

  5. System.Reflection.TargetException:“非静态方法需要一个目标。”

    报错:TargetException, 非静态方法需要一个目标,非静态方法 如果实例为null,调用实例方法会报如上错. 解决办法: 检查实例是否为null,考虑什么情况下实例为null,然后排除实例 ...

  6. 用Razor語法寫範本-RazorEngine組件介紹

    最近剛好有要寫寄Email的程式,在代碼中寫HTML覺得很呆,抽出代碼外寫到txt或html檔當範本,由程式執行時在載入檔案時用Regex換關鍵字又覺得不夠好用,而且因為有時會有要判斷一些條件,就會寫 ...

  7. Linux 动态链接库(.so)的使用

    1. 背景 库:就是已经编写好的,后续可以直接使用的代码. c++静态库:会合入到最终生成的程序,使得结果文件比较大.优点是不再有任何依赖. c++动态库:动态库,一个文件可以多个代码同时使用内存中只 ...

  8. Service 简介 启动方式 生命周期 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  9. gradlew 命令行 build 调试 构建错误 Manifest merger failed MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  10. 极光推送 JPush 简介 集成 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...