nginx是一款轻量级的web服务器,常用的作用为服务器/反向代理服务器以及电子邮件(IMAP/POP3)代理服务器

1.为什么我们要使用Nginx?

  • 反向代理:

    反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

  • 负载均衡:负载均衡,英文名称为Load Balance,是指建立在现有网络结构之上,并提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。其原理就是数据流量分摊到多个服务器上执行,减轻每台服务器的压力,多台服务器共同完成工作任务,从而提高了数据的吞吐量.
  • 动静分离:将静态的资源放到反向服务器,节省用户的访问时间.

2.如何使用nginx?

  • 在Windows上使用Nginx搭建Tomcat服务器

    • 在windows上使用nginx方法审视简单,下载windows的nginx解压,执行nginx.exe即可访问地址localhost
    • 在windows上搭建tomcat集群的软件准备 两个tomcat和一个nginx,注意修改tomcat1的端口和tomcat2的端口,否则端口冲突启动不了 这里我是修改为tomcat1为8080,tomcat2为8090
    • 启动  nginx 和 tomcat1 和tomcat2
    • 准备一个简单的javaweb项目testsession,内容只有一个index.jsp,内容如下
      <%@ page language="java" contentType="text/html; charset=UTF-8"
      pageEncoding="UTF-8"%>
      <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title>Insert title here</title>
      </head>
      <body> tomcat1放在tomcat1下-----放在tomcat2下就是2(为了区分用) 此次请求的<%=request.getRequestedSessionId() %>
      </body>
      </html>
    • 将此项目放在tomcat1的webapps下和tomcat2的webapps下
    • 配置nginx  修改nginx下的conf文件夹中nginx.conf

      • 需要在http节点上添加一个

        upstream servlet_jimisun{
        server 127.0.0.1:8080;//后面端口是tomcat1的端口
        server 127.0.0.1:8090;//后面端口是tomcat2的端口
        }
      • 在location /节点下
        proxy_pass http://servlet_jimisun;
      • 访问地址localhost/testsession  (注意并没有访问tomcat的端口,而是访问的80端口,nginx将请求转发给tomcat1和tomcat2
      • windows上通过nginx部署tomcat集群完成......(有问题的)
      • 注意Session共享问题:SessionID是不一样的,每一次请求都会创建一个新的Session,这样显然不符合我们的要求

3.如何解决通过nginx部署tomcat集群的Session共享问题

  • 解决Session共享方法1(仅限于windows):

    • 修改tomcat的server.xml 支持共享

      将 引擎标签下的 
      
      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
      注释去掉
    • 修改项目的web.xml    在web.xml中添加一个节点
      <distributable/>
    • 此时tomcat1的sessionid和tomcat2的sessionid是一样的 都会认为是一次请求
  • 解决Session共享方法2:将session的id放入redis中
  • 解决Session共享方法3:保证一个ip地址永远访问一台tomcat服务器,就不存在session共享问题了,在upstream中添加
    ip_hash;

    这样刷新多少次本ip只会访问由nginx通过ip_hash算出的tomcat2服务器,这样就不存在session共享问题了

 

当前:nginx有更高深的用法;还有tomcat集群有更多问题需要去解决,小生不才windows集群只能给大家讲到这里,如有问题,敬请指正!

nginx的简单使用和使用nginx在windows上搭建tomcat集群的更多相关文章

  1. 利用nginx搭建tomcat集群

    1.tomcat集群 利用nginx对请求进行分流,将请求平均的分给不同的tomcat去处理,减少单个tomcat的负载量,提高tomcat的响应速度. 2.创建多个tomcat服务器(同一个服务器上 ...

  2. linux搭建tomcat集群+nginx

    安装JDK 一.官方下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 下 ...

  3. Tengine(nginx) 搭建Tomcat集群

    好久没有更新学习的内容了,就是得强迫自己写点东西 记录自己的学习,才能更好的进步! Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和 ...

  4. 使用nginx搭建tomcat集群配置

    软件准备: (1)jdk-8u73-linux-x64.tar.gz (2)apache-tomcat-7.0.57.tar.gz (3)nginx-1.7.7.tar.gz 准备3台Linux机器, ...

  5. Docker如何使用nginx搭建tomcat集群

    首先创建tomcat的文件夹 , 为了方便docker的配置 我这里直接在根目录中创建 第一步:创建文件夹:发布文件夹 mkdir -p /docker/tomcat/webapp8081 mkdir ...

  6. docker+nginx搭建tomcat集群(附录)——nginx.conf文件

    附录:nginx.conf修改后的文件内容 user root;worker_processes 2; #error_log logs/error.log;#error_log logs/error. ...

  7. Docker+nginx搭建tomcat集群

    1.环境准备: a.宿主机CentOS7 b.连接工具FinalShell c.镜像nginx1.20.1,tomcat (镜像拉取:docker pull 镜像名称) 2.创建nginx文件夹,to ...

  8. tomcat集群搭建集成nginx负载均衡

    软件基础+版本: 1.3台centos7系统,其中都已经配置完成了jdk环境,jdk的版本为 [root@node03 bin]# java -version java version "1 ...

  9. Tomcat集群 Nginx负载均衡 shell脚本实时监控Nginx

    第一步,安装Tomcat 系统环境:Centos7 第1步:下载tomcat安装包 tomcat官网:https://tomcat.apache.org/ 第2步:安装包上传至linux中 第3步:下 ...

随机推荐

  1. ERRORS:<class 'Salesman.admin.UsrMngUserAdmin'>: (admin.E005) Both 'fieldsets' and 'fields' are specified.

    在使用django admin的过程中 遇到了这个错误 . Both 'fieldsets' and 'fields' are specified. django.core.management.ba ...

  2. mysql的join操作

    一.Join语法概述 join 用于多表中字段之间的联系,语法如下: ... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona table1 ...

  3. C union共用体

    共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型.您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值.共用体提供了一种使用相同的内存位置的有效方式. 共用体定义: ...

  4. IOS基于XMPP协议开发--XMPPFramewok框架(一):基础知识

    最近蘑菇街团队的TT的开源,使我对im产生了兴趣,然后在网上找到了XMPPFramework进行学习研究, 并写了以下系列教程供大家参考,有写的不对的地方,请大家多多包涵指正. 目录索引 IOS基于X ...

  5. vim的窗口切换

    当用vim写代码的时候,我喜欢一边看着头文件中结构的定义,一边编写实现的代码,这样就经常用到多窗口来编辑,查看文档. 1.同时打开多个文件,并横向排列 vim -o t.c t.h 2.同时打开多个文 ...

  6. vim-程序员的利器

    个人觉得vi使用熟练后就离不开了,用了它效率会提升不少,但是没了它可能还赶不上以前的速度,给惯坏了. 以下是本人无耻的复制和粘贴的:(附图一张方便学习) Vim目前已经有各主流系统的版本,尽管vim较 ...

  7. 查询ip地址归属地

    查询ip地址归属地方法: curl ip.cn/$ip 如果没有返回,试试地址写全: curl https://www.ip.cn/$ip 如:

  8. Typeface-为自定义字体提供字体内存缓存

    Android 上自定义字体的代码一般如下: TextView textview = (TextView) findViewById(R.id.your_referenced_textview); / ...

  9. 06、Windows 10 技术预览

    随着 Windows 10 发布的,未来 Windows 平台都是统一开发模型,可以只写一个 Appx 包,就可以同时部署到 Windows/ Windowsw Phone/ Tablet /xbox ...

  10. 【转载】SAP_ECC6.0_EHP4或SAP_ECC6.0_EHP5_基于Windows_Server_2008R2_和SQL_server_2008下的安装

    其实这是之前Michael_z 5篇文章的集合,但作者做了一些补充 参考重要安装文档:http://www.cnblogs.com/Michael_z/category/322108.html(本博客 ...