案列:Nginx+Tomcat负载均衡、动静分离群集

一、案列:部署Tomcat(在192.168.10.102和192.168.10.103)

1.关闭防火墙

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

2.安装java环境

[root@localhost ~]# yum -y install java
[root@localhost ~]# java -version

3.安装tomcat

[root@localhost ~]# tar zxvf apache-tomcat-9.0.8.tar.gz 
[root@localhost ~]# mv apache-tomcat-9.0.8 /usr/local/tomcat8

4.启动tomcat

[root@localhost ~]# /usr/local/tomcat8/bin/startup.sh
[root@localhost ~]# netstat -anpt | grep java

5.创建测试网页

[root@localhost ~]# mkdir -p /web/webapp1
[root@localhost ~]# vim /web/webapp1/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<html>   
<head><title>JSP test1 page</title>
</head><body><% out.println("动态页面 1,http://www.test1.com");%></body> <body> <div>动态页面的图片 1</div><br><img src="logo.jpg"> </body> 
</html>

6.修改tomcat主配置文件

[root@localhost ~]# vim /usr/local/tomcat8/conf/server.xml <Host name="localhost"  appBase="webapps"unpackWARs="true" autoDeploy="true"><Context docBase="/web/webapp1" path="" /><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" /></Host>

7.重启tomcat

[root@localhost ~]# /usr/local/tomcat8/bin/shutdown.sh 
[root@localhost ~]# /usr/local/tomcat8/bin/startup.sh 

8.客户端访问测试

http://192.168.10.102:8080 ##注意:此时看不到图片,图片要放到nginx上,由nginx解析

备注:

另外一台tomcat用同样的方法部署

二、nginx配置(在192.168.10.101)

1.安装nginx

[root@localhost ~]# yum -y install pcre-devel zlib-devel gcc*
[root@localhost ~]# useradd -M -s /sbin/nologin nginx
[root@localhost ~]# tar zxvf nginx-1.12.0.tar.gz 
[root@localhost ~]# cd nginx-1.12.0
[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
[root@localhost nginx-1.12.0]# make && make install[root@localhost nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

2.编辑测试网页文件

[root@localhost ~]# vim /usr/local/nginx/html/index.html 
<body> 
<h1>静态页面</h1> 
<p>这是个静态页面</p> 
</body>

3.添加图片

[root@nginx ~]# mkdir /usr/local/nginx/html/img //创建静态文件目录 
[root@nginx ~]# cp /root/logo.jpg /usr/local/nginx/html/img

4.修改主配置文件

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
(1)在http配置项中添加
upstream tomcat_server {server 192.168.10.102:8080 weight=1;server 192.168.10.103:8080 weight=1;
}
(2)在server配置项中添加
charset utf-8;
location / {root   html;index  index.html index.htm;
}location ~ .*\.jsp$ {proxy_set_header HOST $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Client-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://tomcat_server;
}location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {root /usr/local/nginx/html/img;expires 30d;
}

备注:

proxy_set_header HOST $host;

把原http请求中的Header中的Host字段放到转发的请求报文里,后端的web服务器利用这个host判断请求的是哪个虚拟主机

proxy_set_header X-Real-IP $remote_addr;

使用$remote_addr变量获得用户的真实ip,$remote_addr一般都是设置第一个代理上面。当一个请求通过多个代理服务器时,用户的IP将会被代理服务器IP覆盖

proxy_set_header Client-IP $remote_addr;

获取客户端ip地址

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

从客户的真实ip为起点,穿过多层级的proxy ,最终到达web 服务器,都会记录下来。所以在获取用户真实ip的时候,最后一个nginx配置此变量,用来获取客户端的ip地址

5.启动nginx

[root@localhost ~]# nginx

6.修改tomcat的配置文件,并重启tomcat

  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%a %r %t %{X-Real-IP}i" resolveHosts="false" />

注意:

在nginx配置文件中用X-Real-IP保存了客户端的真是IP地址,在tomcat中就需要将X-Real-IP解析出来,显示到tomcat的日志中。

7.测试

浏览器打开网站

(1)静态网站测试

http://192.168.10.101

(2)动态网站测试

http://192.168.10.101/index.jsp

(3)查看tomcat的日志文件
[root@localhost ~]# cat /usr/local/tomcat/logs/localhost_access_log.2024-07-09.txt
192.168.10.1 - - [09/Jul/2024:11:12:36 +0800] "GET / HTTP/1.1" 200 221
192.168.10.1 - - [09/Jul/2024:11:12:36 +0800] "GET /logo.jpg HTTP/1.1" 404 1081
192.168.10.1 - - [09/Jul/2024:11:12:39 +0800] "GET / HTTP/1.1" 200 221
192.168.10.1 - - [09/Jul/2024:11:12:39 +0800] "GET /logo.jpg HTTP/1.1" 404 1081
192.168.10.101 - - [09/Jul/2024:11:29:51 +0800] "GET /index.jsp HTTP/1.0" 200 221
192.168.10.101 - - [09/Jul/2024:11:29:52 +0800] "GET /index.jsp HTTP/1.0" 200 221
192.168.10.101 - - [09/Jul/2024:11:29:55 +0800] "GET /index.jsp HTTP/1.0" 200 221
192.168.10.101 GET /index.jsp HTTP/1.0 [09/Jul/2024:11:32:59 +0800] 192.168.10.1
192.168.10.101 GET /index.jsp HTTP/1.0 [09/Jul/2024:11:32:59 +0800] 192.168.10.1
192.168.10.101 GET /index.jsp HTTP/1.0 [09/Jul/2024:11:33:00 +0800] 192.168.10.1
192.168.10.101 GET /index.jsp HTTP/1.0 [09/Jul/2024:11:33:00 +0800] 192.168.10.1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/43457.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在 PostgreSQL 里如何处理数据的跨库关联查询性能优化?

文章目录 一、了解跨库关联查询的挑战&#xff08;一&#xff09;网络延迟&#xff08;二&#xff09;数据量庞大&#xff08;三&#xff09;索引不一致&#xff08;四&#xff09;数据库配置差异 二、优化策略&#xff08;一&#xff09;合理设计数据库架构&#xff08;二&…

计算机网络——网络层(概念及IP地址)

网络层概念 网络层向上层提供的两种服务 在计算机网络领域&#xff0c;网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”&#xff09;曾引起了长期的争论。 争论焦点的实质就是:在计算机通信中&#xff0c;可靠交付应当由谁来负责?是网络还是端系统&#xff1f…

JS之防抖和节流

防抖 (debounce) 所谓防抖&#xff0c;就是指触发事件后在 n 秒内函数只能执行一次&#xff0c;如果在 n 秒内又触发了事件&#xff0c;则会重新计算函数执行时间。 ps: 重置普攻&#xff0c;百度翻译要输完停止一定时间后才翻译。 没有防抖和节流的缺点&#xff1a; 函数触发…

快递柜也上网?你身边的物联网应用

快递柜相信大家都不陌生&#xff0c;如今在各类家庭小区、写字楼、工业园区&#xff0c;各类快递柜已经融入大家的日常&#xff0c;为大家的生活带来便利。大家已经习惯指尖交互就能一键取件&#xff0c;这么便捷的体验背后其实是有一套系统运作机制在支撑的&#xff0c;今天和…

C++入门基础

前言 本篇博客讲解一下c得入门基础 &#x1f493; 个人主页&#xff1a;普通young man-CSDN博客 ⏩ 文章专栏&#xff1a;C_普通young man的博客-CSDN博客 ⏩ 本人giee:普通小青年 (pu-tong-young-man) - Gitee.com 若有问题 评论区见&#x1f4dd; &#x1f389;欢迎大家点赞&…

c++ primer plus 第15章友,异常和其他:异常,栈解退15.3.6

c primer plus 第15章友&#xff0c;异常和其他&#xff1a;异常,栈解退15.3.6 栈解退15.3.6 文章目录 c primer plus 第15章友&#xff0c;异常和其他&#xff1a;异常,栈解退15.3.6栈解退15.3.6 栈解退15.3.6 假设 ty块没有直接调用引发异常的函数&#xff0c;而是调用了对…

深入解析工信认证分类:价值及重要性

随着科技的发展和全球化的推进&#xff0c;企业对于产品和服务的质量、安全、环保等方面的要求日益提高。在这样的背景下&#xff0c;工信认证作为一种权威的第三方认证服务&#xff0c;受到了众多企业的青睐。 一、工信认证的类型 工信认证涵盖了多个领域&#xff0c;包括但不…

全网JAVA数据结构中贪心算法,分治法,动态规划的超详解万字保姆级教学

1.贪心算法 贪心算法是一种在每一步选择中都采取当前状态下最好或者最优的选择&#xff0c;从而希望导致结果是全局最好或者最优的算策略。贪心算法不保证到最优解&#xff0c;但在某些问题上可以快速找到一个近似解。 例如在找零钱问题中问题中&#xff0c;买了一样东西36.4元…

聚焦云技术,探讨 AGI 时代的云原生数据计算系统

6月22日&#xff0c;开源中国社区在上海举办了 OSC 源创会活动&#xff0c;本期活动以「云技术」为主题&#xff0c;邀请了来自华为 openEuler、字节跳动、AutoMQ 等厂商的技术大咖进行分享&#xff0c;拓数派作为云原生数据计算领域的引领者&#xff0c;受邀参与了本次活动&am…

【硬核科普】Ubuntu系统详细解析以及与深度学习的关系

文章目录 0. 前言1. Ubuntu的来源1.1 从Linux说起1.2 开源、稳定的Debian1.3 更稳定、友好且开放的Ubuntu 2. Ubuntu与深度学习3. Ubuntu在自动驾驶领域的应用4. 附录&#xff1a;Linux发行版统计 0. 前言 按照国际惯例&#xff0c;首先声明&#xff1a;本文只是我自己学习的理…

idea中没有显示‘‘Spring‘‘一栏 (已解决)

第一步: 随便找一个Bean(即直接或者间接使用Component的类) 第二步: 找到左边的图标, 右键这个图标, 然后选择如下选项: 第三步: 成功 然后就成功了, 可以看到具体的bean了以及其bean的关系图等.

STM32 IIC详解(软件模拟)

目录 一、IIC协议基本原理 1.IIC协议概述 2.时序图分析 二、代码分析 1.IIC初始化 2.IIC起始信号 3.IIC发送数据 4.获取应答信号 5.读一个字节 6.产生ACK应答 7.不产生ACK应答 IIC&#xff08;Inter-Integrated Circuit&#xff09;在嵌入式系统中是一种常见的数据通…

PHP全民投票微信小程序系统源码

&#x1f5f3;️【全民参与的力量】全民投票系统小程序&#xff0c;让决策更民主&#xff01; &#x1f310; 一键启动&#xff0c;全民参与 全民投票系统小程序&#xff0c;是连接每一个声音的高效桥梁。只需简单几步&#xff0c;即可在线发起投票活动&#xff0c;无论是社区…

最新综述:多模态引导的基于文生图大模型的图像编辑算法

文章目录 综述亮点1. 图像编辑任务的范围2. 一般性编辑算法的统一框架3. 统一框架在多模态编辑任务中的应用4. 不同组合在文本引导编辑场景下的比较5. 未来研究方向 近期&#xff0c;复旦大学 FVL 实验室和南洋理工大学的研究人员对于多模态引导的基于文生图&#xff08;Text-t…

01-引论-操作系统的目标和作用

操作系统的目标 1.方便性 2.有效性 3.可扩充性 4.开放性 操作系统的目标与应用环境有关 在不同的应用环境下&#xff0c;操作系统的重点和功能可能会有所不同。例如&#xff0c;对于桌面操作系统&#xff0c;用户界面的友好性和多媒体功能可能是重点&#xff1b;对于服务…

职升网:考取中专文凭的途径主要有三种!

考取中专文凭的途径主要有三种&#xff1a;成人高考、网络教育和自学考试。以下是针对每种途径的详细解释和说明&#xff1a; 成人高考 适合人群&#xff1a;适合已经工作的成年人&#xff0c;特别是希望在工作之余提升学历的人群。 报考层次&#xff1a;可以选择高起专或高…

使用bypy丝滑传递百度网盘-服务器文件

前言 还在为百度网盘的数据集难以给服务器做同步而痛苦吗&#xff0c;bypy来拯救你了&#xff01;bypy是一个强大而灵活的百度网盘命令行客户端工具。它是基于Python开发的开源项目&#xff0c;为用户提供了一种通过命令行界面与百度网盘进行交互的方式。使用bypy&#xff0c;…

博美犬插画:成都亚恒丰创教育科技有限公司

​博美犬插画&#xff1a;萌动心灵的细腻笔触 在浩瀚的艺术海洋中&#xff0c;有一种艺术形式总能以它独有的温柔与细腻&#xff0c;触动人心最柔软的部分——那便是插画。而当插画遇上博美犬这一萌宠界的明星&#xff0c;便诞生了一幅幅令人爱不释手的作品&#xff0c;成都亚…

ProFormList --复杂数据联动ProFormDependency

需求&#xff1a; &#xff08;1&#xff09;数据联动&#xff1a;测试数据1、2互相依赖&#xff0c;测试数据1<测试数据2,测试数据2>测试数据1。 &#xff08;2&#xff09;点击添加按钮&#xff0c;添加一行。 &#xff08;3&#xff09;自定义操作按钮。 &#xff0…

To美术-渲染管线及优化方向(CPU方向)

一、CPU与GPU 1、CPU与GPU的区别 橙黄色&#xff1a;控制单元   橙红色&#xff1a;存储单元  绿色&#xff1a;计算单元 CPU:结构组成复杂、控制逻辑丰富&#xff0c;计算量小&#xff0c;适合复杂运算 GPU&#xff1a;结构组成简单&#xff0c;核心数量多&#xff0c;计…