前言:
  对于javaer而言, nginx+tomcat集群配置, 已然成了web应用部署的主流. 大公司如此, 小公司亦然. 对于个人开发者而言, 资源有限, 往往多个web应用混部于一台服务器(云主机), 如何隔离访问这些服务资源? 彼此又不影响呢? nginx来为你排忧解难, ^_^.
  本文将介绍tomcat的简单配置和部署, 以及nginx作为反向代理, 如何分流.

基础架构:
  不成文的约定:
  1). 一个tomcat容器部署一个webapp应用实例
  2). url根目录访问webapp
  简而言之, 以http://{host}:{port}来访问该webapp, 而不是http://{host}:{port}/{webapp}.
  

Tomcat的根目录配置:
  tomcat中的webapp, 其默认访问的url规则中, 是包含{webapp}的名称. 那如何实现根目录访问呢?
  • 替换ROOT目录
  tomcat中, webapps/ROOT是做为其默认的根目录. 因此可以简单的把相应地webapp同名替换为ROOT, 即可到达目的. 雀占鸠巢, 是个很好很无耻的方法.
  • 添加Context配置项
  在conf/server.xml中, 找到Host父标签项, 在其内部添加Context项即可.
  比如配置后的项如下所示:

  <Host name="localhost" appBase="webapps"
    unpackWARs="false" autoDeploy="false">
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
      prefix="localhost_access_log" suffix=".txt"
      pattern="%h %l %u %t &quot;%r&quot; %s %b" />

    <!— 添加该配置项, docBase为指定的根目录路径 —>
    <Context path="" docBase=“/path/to/webapp"
      debug=“0" crossContext="true" />
  </Host>

  注意Context添加的位置, docBase为webapp对应的目录(切记是解压后的目录, 而不是war文件).
  在实际生产环境中, 往往把unpackWars和autoDeploy设置为false, 这样是为了防止外界非法war注入攻击.

nginx分发配置:
  让我们先来谈谈域名, 再来具体配置nginx.conf.
  *) 域名分配
  域名是nginx分发的基础和依据. 同时域名是个非常廉价的资源, 这是一个很大的前提.
  对于域名和webapp的映射关系, 往往有两种方式.
  1) 一个一级域名对应一个webapp
  多个域名可以映射到同个ip, 然后让域名与webapp一一对应.
  2) 充分利用二级域名
  *) nginx配置
  在http配置项中, 添加server项列表, 每个对应一个后级服务.

http {
  # 其他配置项 # webapp backend 1
# 一个一级域名对应一个webapp
server {
listen 80;
server_name domain1.com www.domain1.com;
location / {
proxy_pass http://127.0.0.1:8080;
}
} # webapp backend 2,
# 使用二级域名对应一个webapp
server {
listen 80;
server_name appA.domain2.com;
location / {
proxy_pass http://127.0.0.1:8081;
}
}
}

  注意: server_name可以指定为域名, 也可以指定为ip.
  具体的nginx配置细节, 就不再展开.

总结:
  本文涉及的点很少, 即没有谈及nginx+tomcat配置的具体含义, 亦没有深入nginx+tomcat的性能调优. 但对于混部的webapp应用而言, 所涉及的内容能够帮助你, 迅速实现多个webapp的访问隔离.

公众号&游戏站点:
  个人微信公众号: 木目的H5游戏世界
  
  个人游戏作品集站点, 请点击访问 www.mmxfgame.com.

nginx+tomcat集群配置(1)---根目录设定和多后端分发配置的更多相关文章

  1. nginx+tomcat集群配置(4)--rewrite规则和多应用根目录设定思路

    前言: nginx中有一块很重要的概念, 就是rewrite规则. 它会对URL进行修改, 然后进行内部的重定向. rewrite授予了nginx更多的自由, 使得后级服务的接入更加地方便. 本文将简 ...

  2. Nginx+Tomcat集群配置

    Nginx+Tomcat集群配置 一台虚拟机作为Nginx服务 两太虚拟机配置Tomcat+jdk环境 Nginx测试 启动: cd usr/local/nginx/sbin ./nginx ---& ...

  3. 【nginx+tomcat集群】Nginx1.12.2+Tomcat7集群+负载均衡+Session共享

    今天想着将项目优化一下,就想的实现集群分布,在本机测试:利用nginx+tomcat实现 通过上一篇博客(http://www.cnblogs.com/qlqwjy/p/8535235.html),N ...

  4. 160513、nginx+tomcat集群+session共享(linux)

    第一步:linux中多个tomcat安装和jdk安装(略) 第二步:nginx安装,linux中安装nginx和windows上有点不同也容易出错,需要编译,这里做介绍 一.安装依赖 gcc open ...

  5. Nginx+Tomcat集群+session共享

    Nginx+Tomcat集群+session共享 1)安装Nginx 2)配置多个Tomcat,在server.xml中修改端口(端口不出现冲突即可) 3)在nginx.conf文件中配置负载均衡池, ...

  6. nginx+ tomcat集群+动静资源分离

    不知道为什么这个随便删不掉,写了也值显示一半一半不显示, 我把重新写了一遍: nginx + tomcat集群和动静资源分离

  7. nginx+tomcat集群方法

    下载地址:wget http://nginx.org/download/nginx-1.16.1.tar.gz 解压:tar -zxvf 预编译 nginx+tomcat集群方法: 进入nginx配置 ...

  8. nginx+tomcat集群负载均衡(实现session复制)

    转自:http://talangniao.iteye.com/blog/341512 架构描述 前端一台nginx服务器做负载均衡器,后端放N台tomcat组成集群处理服务,通过nginx转发到后面( ...

  9. Nginx+Tomcat集群部署

    为了获取更好的性能,我们常常需要将tomcat进行集群部署.下文通过nginx转发实现tomcat集群,并通过nginx-upstream-jvm-route插件保证session的粘滞. 应用场景环 ...

随机推荐

  1. 胡扯两句——CDQ分治

    之前听大神讲过CDQ分治大概是个什么东西,但是一直还没有真正去搞过.今天稍微看了一下,写点自己的理解. 首先CDQ分治有两个条件. 条件1:可以分成两个独立互不影响的问题(这里的"独立&qu ...

  2. Box2d引擎之元素

    主要包括: 简单形状的物体,如矩形.圆.多边形 复杂的由多个形状组成的物体 结合点,如连接多个物体的旋转结合点 接触监听器 一.简单形状的物体 矩形 function createRectangula ...

  3. superobject中 JavaToDelphiDateTime的使用

    procedure TForm1.FormCreate(Sender: TObject); var n: TDateTime; i64: Int64; s: Integer; begin Memo1. ...

  4. hadoop源码阅读

    1.Hadoop的包的功能分析 2.由于Hadoop的MapReduce和HDFS都有通信的需求,需要对通信的对象进行序列化.Hadoop并没有采用java的序列化,而是引入它自己的系统.org.ap ...

  5. [转][C/C++]函数名字修饰(Decorated Name)方式

    1.C/C++函数修饰名: 对于我们的C/C++源程序而言,函数名只是函数的一小部分,函数还有调用方式(参数入栈方式).返回值类型.参数个数和各参数类型等信息,对于C++类成员函数,还有更多信息.这些 ...

  6. iOS之沙盒机制和如何获取沙盒路径

    iOS APP可以在自己的沙盒里读写文件,但是,不可以访问其他APP的沙盒.每一个APP都是一个信息孤岛,相互是不可以进行通信的,唯独可以通过URL Scheme.沙盒里面的文件可以是照片.声音文件. ...

  7. 使用plsql连接别人的oracle(转)

    文章来源:http://www.linuxidc.com/Linux/2013-04/82738.htm oracle服务有时候我们觉得太大,所以我们只需要在本机上装一个oracle客户端和plsql ...

  8. 在Hadoop集群中添加机器和删除机器

    本文转自:http://www.cnblogs.com/gpcuster/archive/2011/04/12/2013411.html 无论是在Hadoop集群中添加机器和删除机器,都无需停机,整个 ...

  9. java基础-008

     57.面向对象软件开发的优点 代码开发模块化,更易于维护 代码复用 增强代码的可靠性和灵活性 增强代码的可理解性 面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象  58.封装 封装给对象 ...

  10. SimpleDateFormat格式化日期

    SimpleDateFormat格式化日期 import java.text.SimpleDateFormat;import java.util.Date;public class test { pu ...