Nginx+双tomcat+memcache实现软负载

[CVE-2020-26258/26259]Xstream任意文件删除/SSRF漏洞 漏洞详情 CVE-2020-26259: 任意文件删除。 CVE-2020-26258: SSRF 细节 poc [CVE-2020-26258] SSRF <map> <entry> <jdk.nashorn.internal.objects.NativeString> <flags>0</flags> <value class='com.sun.xml.internal.bind.v2.run 阅读详情

前言;

       为应对访问量大的web请求,单台tomcat 已不能应对突如其来的故障,为不间断的为用户提供服务,我们可以采用nginx+tomcat的方式实现负载均衡的访问控制。当多台tomcat协同工作时,最主要的问题是session如何实现共享,接下来本文就告诉你,如何配置。


 

环境:

192.168.1.199   nginx 监听80端口

192.168.1.220   memcache 监听11211端口

192.168.1.200   tomcat 1 监听8080

192.168.1.201   tomcat 2 监听8088


一、安装 centos 7 64位版

 

1、安装centos 7 64位版。我安装的版本是CentOS-7.0-1406-x86_64-DVD.iso

下载地址:http://ftp.yzu.edu.tw/Linux/CentOS/7.0.1406/isos/x86_64/

2、Centos的安装,略。

 

3、配置网卡

Centos安装完成后,默认网卡未启用,通过修改以下配置文件启用

Vi  /etc/sysconfig/network-script/ifcfg-eth0

 

修改里面的ONBOOT=yes,如果要手动配置静态IP,修改BOOTPROTO=static

然后添加:

IPADDR=ip地址

NETMASK=子网掩码

GATEWAY=网关

DNS1=DNS解析地址。

存盘,重启网卡或服务器;

 

4、安装相关的工具:

A、安装网络工具相关

yum  install  net-tools  //安装了后,可使用ifconfig一类的工具 

B、安装编译相关

yum install  gcc-c++  zlib  zlib-devel  openssl  openssl--devel  pcre  pcre-devel

 

 

二、Nginx安装与配置

 

1、这里直接采用yum 方式安装了。如果是编译方式,请查找相应的文档。

yum  install  nginx

 

安装完成后,查看一下安装的位置 

Find  -name nginx

 

一般是放在了/etc/nginx

 

2、配置nginx支持负载

修改配置文件:nginx.conf为如下内容,该文件在/etc/nginx目录下

 

user  nginx;

worker_processes  1;

 

error_log  /var/log/nginx/error.log warn;

pid        /var/run/nginx.pid;

 

events {

    worker_connections  1024;

}

 

http {

    include       /etc/nginx/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  /var/log/nginx/access.log  main;

 

    sendfile        on;

    #tcp_nopush     on; 

 

    #include /etc/nginx/conf.d/*.conf;

    keepalive_timeout  0;

    #keepalive_timeout  65;

    #gzip  on;

 

upstream 192.168.1.199{

#upstream的负载均衡,weight是权重,可以根据机器配置定义权重。weigth参数表示权值,权值越高被分配到的几率越大。 

server 192.168.1.200:8088 weight=3;

server 192.168.1.201:8080 weight=3; 

}

    server {

        listen       80;

        server_name  192.168.1.199;

 

        #charset koi8-r;

 

        #access_log  logs/host.access.log  main;

 

        location / {

            #root   html;

            #index  index.html index.htm;

            proxy_pass http://192.168.1.199;

            proxy_redirect default;

        }

 

        #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;

        #}

    }

}

 

 

3、启动nginx

直接执行:nginx

停止nginx : nginx -s stop

更多命令,可以nginx -h 查看帮助

 

 

 

三、安装Memcache。

这个比较简单,可以下载一个windows版本的,直接打开执行就可以了。

如果有不会的,请查询相关的资料。

 

Memcache的默认端口是11211

 

在本例中,我把memcache安装在了:192.168.1.220上端口为11211

 

四、配置Tomcat

这里我们采用两个tomcat,如果都部署在不同机器上,请修改sever.xml里的端口,如果部署在同一台机器上,请修改相关的端口, 与NGINX里配置的端口对应上。

用tomcat集成memcache的方式有好几种:

Flexjson-session

Java-session

Javolution-session

Kryo-session

Xstream-session

 

有说kryo方式效率相对较高一点。这里我们使用kryo-session方式。使用kryo-session方式需要以下的jar包:



1、配置tomcat的contex.xml如下:

 

将下面的配置,添加到两个tomcat中的contex.xml文件中:

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"

    memcachedNodes="n1:192.168.1.220:11211"   

lockingMode="auto"

sticky="false" 

requestUriIgnorePattern= ".*\.(png|gif|jpg|css|js)$"    

sessionBackupAsync= "false"   

sessionBackupTimeout= "100"    

copyCollectionsForSerialization="true"   

transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"    

  />

 

2、启动相关应用,顺序为:

Nginx

Memcache

Tomcat

 

3、编写测试网页,并放到tomcat的应该目录下:

这个放在tomcat 2里:Webapps\ROOT\t.jsp  

 

<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false"%>

SessionID: <h1><%=session.getId()%></h1>  

<BR>  

SessionIP:<%=request.getServerName()%>  

<BR>  

SessionPort:<%=request.getServerPort()%>  

<h1>tomcat 2 <h1/>

 

这个放在tomcat 1中:Webapps\ROOT\t.jsp  

 

<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false"%> 

SessionID: <h1><%=session.getId()%></h1>  

<BR>  

SessionIP:<%=request.getServerName()%>  

<BR>  

SessionPort:<%=request.getServerPort()%>  

<h1>来自tomcat 1 <h1/>



五、看看效果

 

1、直接访问两个tomcat地址




2、访问nginx监听的地址


再刷新一下



成功,我们发现。sessionID并没有变化,配置成功!



最后再附上,集成了相关session共享的jar包的tomcat,测试通过了的

apache-tomcat 7 集成了memcache-java-session相关包



科技中介服务机构如何提升客户在技术评估与需求匹配环节的服务效率与专业度.docx 科技中介服务机构如何提升客户在技术评估与需求匹配环节的服务效率与专业度 立即下载

相关推荐

51单片机的温湿度检测报警系统仿真资料

51单片机的温湿度检测报警proteus仿真系统

XStream升级1.4.18问题

XStream于2021.08.22升级了1.4.18版本,本次改动很大,看看官网说了啥 大概的意思是说,9年前,XStream整了一个安全框架,用来反序列化时为允许的类型实现黑名单或白名单,在版本1.4.17之前,XStream保留了一个默认黑名单,以拒绝所有类型的Java运行时(用于各种安全攻击),从而保证现有用户的最佳运行时兼容性。然而,这种方法失败了(它每个版本补漏洞就是把已知的攻击加到黑名单中)。经过几个月的研究,仅Java运行时就包含了数十种可用于攻击的类型,甚至不需要查看类路径.

LiJiVV的博客 9478

SAP SD跨公司销售IDOC自动记账配置实战指南

本文详细介绍了SAP SD模块中跨公司销售IDOC自动记账的配置实战指南。通过IDOC技术实现集团企业间交易的自动化处理,显著提升财务效率和准确性。文章涵盖前置配置、RFC连接、合作伙伴参数设置及财务科目分配等关键步骤,并提供了常见错误排查和性能优化建议,帮助用户快速掌握这一高效业务流程。

weixin_29284885的博客 770

【已复现】XStream 拒绝服务漏洞(CVE-2022-41966)安全风险通告

奇安信CERT致力于第一时间为企业级用户提供安全风险通告和有效解决方案。安全通告XStream是一个Java对象和XML相互转换的工具,用来将对象序列化成XML(JSON)或将XML反序列化为对象,并提供所有的基础类型、数组、集合等类型直接转换的支持。近日,奇安信CERT监测到XStream中存在拒绝服务漏洞(CVE-2022-41966),XStream在将XML反序列化为对象时存在堆栈溢出,未...

smellycat000的专栏 5598

【编译原理】龙书第三章作业答案

【编译原理】龙书第三章作业答案 练习3.1.1:根据3.1.2节中的讨论,将下面的C++程序划分成正确的词素序列。哪些词素应该有相关联的词法值?应该具有什么值? 答案: 左列为词素,右列为值,划分如下: < float> 值为它本身 <id,limitedSquare> 值为*limitedSquare指针 <(> 标点符号无值 ...

作业报告杂物间 2万+

nupkg 本地安装_使用Nuget安装离线包nupkg

一:Nuget简介:NuGet 是免费、开源的包管理开发工具,专注于在 .NET 应用开发过程中,简单地合并第三方的组件库。当需要分享开发的工具或是库,需要建立一个Nuget package,然后把这个package放到Nuget的站点。如果想要使用别人已经开发好的工具或是库,只需要从站点获得这个package,并且安装到自己的Visual Studio项目或是解决方案里。NuGet能更方便地把一...

weixin_34460380的博客 1万+

XStream方法列表

http://xstream.codehaus.org/javadoc/com/thoughtworks/xstream/XStream.html#ignoreUnknownElements%28%29     com.thoughtworks.xstream Class XStream java.lang.Object com.thoughtworks.xstr...

zzc1684的博客 782

uni踩坑笔记 - 离线打包调起微信分享后从微信返回APP时黑屏

apk能成功调起微信并进行分享操作,但分享完成后点击回到应用后应用出现黑屏的情况,并在约3-5秒后自动重启。

weixin_46737742的博客 5215

java class 文件internal error_【漏洞通告】XStream 任意文件删除漏洞(CVE202026258、CVE202026259)...

漏洞名称 :XStream 反序列化漏洞CVE-2020-26258、CVE-2020-26259威胁等级 : 高危影响范围:XStream <= 1.4.14漏洞类型 :反序列化利用难度 : 简单 漏洞分析 1XStream组件介绍XStream是Java类库,用来将对象序列化成XML(JSON)或反序列化为对象。XStream在运行时使用Java反射机...

weixin_29360387的博客 718

STM32单片机远程升级

stm32远程升级

fang_yang_wa的博客 1万+

49、非合作目标运动参数估计与状态滤波方法研究

本文研究了非合作空间目标的运动参数估计与状态滤波方法。通过分析目标的章动运动特性,建立了运动方程,并分别提出了基于最小二乘法的质心运动参数估计方法和旋转运动参数估计方法。同时,设计了误差状态卡尔曼滤波器(ESKF)用于姿态滤波和角速度估计,以提高估计精度。仿真实验验证了所提方法的有效性,能够准确估计目标的运动参数和状态信息,为在轨服务提供了技术支持。

gpt4scribbler的博客 89

分布式架构的总结

一、前言 ​  随着社会的发展,技术的进步,以前的大型机架构很显然由于高成本、难维护等原因渐渐地变得不再那么主流了,替代它的就是当下最火的分布式架构,从大型机到分布式,经历了好几个阶段,我们弄明白各个阶段的架构,才能更好地理解和体会分布式架构的好处,那么本文我们就来聊聊分布式架构的演进过程,希望能给大家带来眼前一亮的感觉。 二、背景说明 ​  我们都知道一个成熟的大型网站的系统架构...

weixin_30802273的博客 201

基于STM32设计的物联网疫苗冷链物流监测系统

本设计基于物联网技术,开发了一套疫苗冷链物流环境监测系统。系统采用STM32F103C8T6作为主控芯片,集成SHT30温湿度传感器、震动传感器、GPS定位模块和4G通信模块,实现对运输环境的温度、湿度及震动状况的实时监测与控制。通过继电器驱动半导体制冷模块和加湿器,系统能够自动调节环境温湿度,保障疫苗运输的安全性。采集的环境数据通过MQTT协议上传至华为云物联网平台,配套开发的Android手机APP和Windows上位机软件基于Qt平台设计,支持远程实时查看环境数据和车辆定位,提升了疫苗冷链运输的智能化

863

xstream 反序列化漏洞研究与修复

文章目录1、简介2、举例3、漏洞4、修复 1、简介 xstream是一个用于序列化和反序列化的java库,主要是java对象和xml之间相互转换。 XStream反序列化同fastjson这种不一样的地方是fastjson会在反序列化的时候主动去调用getters和setters,而XStream的反序列化过程中赋值都有Java的反射机制来完成,所以并没有这样主动调用的特性。 特点 使用方便 - XStream的API提供了一个高层次外观,以简化常用的用例 无需创建映射 - XStream的API提供了默

你和萤火虫有两个共同点,在我的眼里都会发光,同时,都已经很多年没见了 6153

用 CL_ABAP_ZIP 在 ABAP 里打包任意文件:从前端多选到 ZIP 交付的一条龙实践

本文介绍了在SAP ABAP中实现文件打包交付的完整解决方案。文章首先区分了ZIP和GZIP的不同用途:ZIP用于多文件归档,GZIP用于单数据流压缩。核心流程包括四个步骤:文件选择、二进制上传、内存打包和ZIP输出,并提供了关键对象与函数的速查表。针对实际项目中常见的乱码、大文件处理等问题给出了解决方案,最后展示了一个完整的可运行示例代码,涵盖了从文件选择到下载的全流程实现。该方案适用于财务、质量、运维等多种业务场景,能够有效解决多文件交付的最后一公里问题。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 216

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

xstream 版本_XStream任意文件删除/服务端请求伪造漏洞预警通报(CVE202026259/CVE202026258)...

大网安协【2020-77】近日,大连网络安全信息通报机制合作单位新华三集团提醒,新华三攻防实验室监测到XStream官方更新了两则漏洞风险通告(CVE-2020-26258、CVE-2020-26259),并进行了复现和分析。1. 漏洞综述1.1 漏洞背景XStream是一个简单、易用的Java类库,主要用于在Java对象和XML之间进行序列化和反序列化,支持所有的基础类型、数组及集合...

weixin_28862113的博客 1347

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

haproxy+nginx+tomcat+memcache实现动静分离、会话同步集群

一、实验说明haproxy在前端做负载均衡调度,后端实现动静分离静态资源server为nginx动态内容使用nginx&tomcat做app server,集成于单机,两台使用两台memcache服务器做高可用session缓存,实现app server宕机时会话不中断以上组合使用实现业务、session、session缓存均为高可用的集群。二、实验准备haproxy...

weixin_33989058的博客 499

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

各种反序列化(XStream/XMLDecoder)

XStream反序列化原理 XStream将对象和xml字符串之间进行转换。 Object <=> XML字符串 XStream#toXML(Object o) // 对象=> xml XStream#fromXML(FileInputStream xml) // xml => 对象 XStream反序列化漏洞 影响范围 1.4.x<=1.4.6或1....

公众号shadow sock7 3594

centos 下安装iptraf流量监控软件

首先看有没有安装iptraf支持软件 用命令检查    rpm -qa | grep gcc     rpm -qa | grep glibc    rpm -qa | grep ncurses 如果没有安装的话就安装 yum -y install gcc yum -y install glibc yum -y install ncurses

面朝阳光,心向大海 的专栏 1735

APACHE 同一IP绑定多个域名

折腾好一阵子。终于弄出来了   在httpd.conf文件的最后,添加如下的代码 #NameVirtualHost 这一第是必须的! NameVirtualHost *:80      ServerAdmin   iceboard.yang@gmai.com   DocumentRoot  d:/www/easyang   ServerName    www.

面朝阳光,心向大海 的专栏 726

LINUX 移植系列(一)

LINUX 移植系列(一)   硬件环境:S3C6410 【ARM11,支持内部视频流编解码】         :nand flash 2G  mem:256                    :4.3寸屏 软件平台:以ubuntu操作系统为移植系统 虚拟机:oracle vm   一、搭建Linux开发环境 1、  在主机上,安装vmbox虚拟机软件。【具体步骤,请goog

面朝阳光,心向大海 的专栏 615

LINUX 移植系列(二)

LINUX 移植系列(二) LINUX 移植系列    第二集 距离上篇文档已有大半年时间了,今天继续   1、  关于UBOOT 【uboot 全称Universal Boot Loader,是主要用于嵌入式系统的开机加载程序,支持多种不同的计算机系统结构,PPC,ARM,AVR32,MIPS,X86等等】 支持的文件系统有:cramfs,ext2,fat,fd

面朝阳光,心向大海 的专栏 543

nginx编译选项

附:nginx编译选项   make是用来编译的,它从Makefile中读取指令,然后编译。   make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。   configure命令是用来检测你的安装平台的目标特征的。它定义了系统的各个方面,包括nginx的被允许使用的连接处理的方法,比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是

面朝阳光,心向大海 的专栏 535

RHEL 6 下安装Nginx步骤

RHEL 6 下安装Nginx步骤 成于:2013-8-16日  出文原因:搭建nginx与tomcat之负载 本文是介绍使用源码编译安装,包括具体的编译参数信息。 正式开始前,编译环境gcc g++ 开发库之类的需要提前装好  1、  安装gcc和g++库。 方法可以通过yum install 的方式安装,也可以找到安装光盘镜像文件ISO,挂载到光驱上,使用rpm的方式 安装。Yu

面朝阳光,心向大海 的专栏 533

makeFile文件编写初探!!

有三个文件: file1:stutemp.cpp #include #include "sayhai.h" int main() {   Person s;   s.printName();         return 0; }   file2:sayhai.h #ifndef SAYHAI_H #define SA

面朝阳光,心向大海 的专栏 432
上一篇: linux 下使用HTTPRY抓取HTTP流量包
下一篇: 浅谈Sql Server中的 隔离层级(Isolation Levels)
ufocode
博客等级 码龄23年 36粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值