当前位置: 首页 > article >正文

Nginx 反向代理+负载均衡+动静分离整合 Tomcat

一、环境准备1. 服务器准备角色IP地址端口核心功能Nginx192.168.81.13380反向代理、负载均衡、静态资源处理Tomcat节点1192.168.81.1348080处理动态请求JSP/ServletTomcat节点2192.168.81.1358081处理动态请求JSP/Servlet静态资源存储192.168.81.133-存放HTML、图片、CSS等静态文件2. 临时关闭防火墙和selinux# 关闭防火墙 systemctl stop firewalld systemctl disable firewalld # 关闭selinux setenforce 0二、部署Nginx编译安装1. 安装编译依赖包pcre用于正则匹配zlib用于Gzip压缩openssl用于SSL加密yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c make2.创建Nginx用户Nginx专用用户无登录权限仅用于运行nginx进程提升安全性useradd -M -s /sbin/nologin nginx3.下载并解压源码包# 下载 cd /opt wget https://nginx.org/download/nginx-1.20.2.tar.gz # 解压 tar zxvf nginx-1.20.2.tar.gz -C /opt/4. 配置编译参数cd /opt/nginx-1.20.2 # 配置 ./configure --prefix/usr/local/nginx \ --usernginx \ --groupnginx \ --with-file-aio \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --with-http_flv_module \ --with-http_ssl_module \ --with-stream # 编译并安装 make make install5. 创建Nginx系统服务支持systemctl命令管理vim /lib/systemd/system/nginx.service # 添加系统服务配置 [Unit] Descriptionnginx Afternetwork.target [Service] Typeforking PIDFile/usr/local/nginx/logs/nginx.pid ExecStart/usr/local/nginx/sbin/nginx ExecReload/bin/kill -s HUP $MAINPID ExecStop/bin/kill -s QUIT $MAINPID PrivateTmptrue [Install] WantedBymulti-user.target6. 设置权限并启动nginxchmod 777 /lib/systemd/system/nginx.service # 重新加载系统服务配置 systemctl daemon-reload systemctl start nginx.service systemctl enable nginx.service三、配置Nginx反向代理负载均衡动静分离编辑/usr/local/nginx/conf/nginx.conf实现“反向代理负载均衡动静分离”一体化配置user nginx; # 注意这里对后面的权限很关键。 ... http { include mime.types; default_type application/octet-stream; # 1. 定义Tomcat集群加权轮询故障转移备份节点 upstream tomcat_cluster { server 192.168.81.134:8080 weight1 max_fails3 fail_timeout30s; server 192.168.81.135:8081 weight2 max_fails3 fail_timeout30s; server 192.168.81.136:8080 backup; # 备份节点 } # 2. Nginx服务配置 server { listen 80; server_name 192.168.81.133; charset utf-8; gzip on; # 启用Gzip压缩 # 默认nginx访问页面这里我把index.html文件移到了/data/www/static目录下 location / { root /data/www/static; # 告诉 Nginx找不到后缀的文件也来这里找 index index.html index.htm; # 告诉 Nginx如果只访问 IP默认打开 index.html } # 3. 静态图片单独配置缓存10天 location ~ \.(jpg|png|jpeg)$ { root /data/www/static/img; expires 10d; access_log off; } # 4. 动静分离静态资源本地处理 location ~ \.(html|htm|gif|jpg|jpeg|css|js|bmp|swf)$ { root /data/www/static; # 静态资源目录 expires 30d; # 缓存30天 access_log off; # 关闭日志 } # 5. 反向代理负载均衡动态请求转发 location ~ \.(jsp|do|action)$ { proxy_pass http://tomcat_cluster; # 指向Tomcat集群 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 30s; # 连接超时时间 proxy_read_timeout 60s; # 读取超时时间 } } }补充这里的只显示了主要的功能配置有一些默认的配置比如nginx的默认访问页面需要自行调整。若报错仔细思考配置文件里的内容当你找出问题所在相信你会对nginx的配置理解更上一层。四、Tomcat 应用部署1. 安装JDK# 下载 cd /opt wget https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz # 解压 tar zxvf jdk-8u202-linux-x64.tar.gz -C /usr/local/2. 配置环境变量vim /etc/profile # 环境变量 export JAVA_HOME/usr/local/jdk1.8.0_202 # JDK安装目录 export JRE_HOME${JAVA_HOME}/jre # JRE目录 export CLASSPATH.:${JAVA_HOME}/lib:${JRE_HOME}/lib # 类路径指定JVM查找类文件的路径 export PATH${JAVA_HOME}/bin:$PATH # 将JDK二进制目录加入系统PATH全局可用Java命令 # 生效 source /etc/profile # 验证 java -version3. 安装并启动 Tomcat# 下载 cd /opt wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.75/bin/apache-tomcat-9.0.75.tar.gz # 解压 tar zxvf apache-tomcat-9.0.75.tar.gz -C /usr/local/ # 为了方便操作修改一下名字 mv apache-tomcat-9.0.75 tomcat9 # 启动tomcat cd /usr/local/tomcat9/bin ./startup.sh # 验证是否启动成功 ps -ef | grep tomcat # 查看进程 # 查看端口监听 netstat -tunlp | grep 8080补充如果要停止tomcat使用命令./shutdown.sh另外一个Tomcat节点同理。4.Tomcat 应用部署在两台Tomcat的/usr/local/tomcat/webapps/ROOT目录下分别创建测试JSP页面验证负载均衡Tomcat节点1192.168.81.134:8080cd /usr/local/tomcat9/webapps/ROOT # 备份默认页面 mv index.jsp index.jsp.bak添加测试内容vim index.jsp # 添加以下内容 % page languagejava importjava.util.* pageEncodingUTF-8% html headtitleJSP Test1 Page/title/head body % out.println(动态页面 1 - Tomcat Node1: 192.168.81.134:8080); % /body /html重启Tomcat节点1/usr/local/tomcat9/bin/shutdown.sh /usr/local/tomcat9/bin/startup.shTomcat节点2192.168.81.135:8081cd /usr/local/tomcat/webapps/ROOT # 备份默认页面 mv index.jsp index.jsp.bak添加测试内容vim index.jsp # 添加以下内容 % page languagejava importjava.util.* pageEncodingUTF-8% html headtitleJSP Test2 Page/title/head body % out.println(动态页面 2 - Tomcat Node1: 192.168.81.135:8081); % /body /html修改端点8080 - 8081cd /uar/local/tomcat9/conf/server.xml重启Tomcat节点2/usr/local/tomcat9/bin/shutdown.sh /usr/local/tomcat9/bin/startup.sh五、测试验证1. 静态页面访问浏览器输入http://192.168.81.133显示静态页面内容命令行curl -I http://192.168.81.133返回200状态码说明静态资源处理正常。2. 静态图片访问前提已经在/data/www/static/img目录下存放了图片 test.jpg然后给文件增加权限chmod 644 /data/www/static/img/test.jpg浏览器访问http://192.168.81.133/test.jpg深度验证为了证明这张图是Nginx 直接给你的而不是转发给 Tomcat 找的我们需要看HTTP 响应头Response Headers。在浏览器按F12打开开发者工具切换到Network网络标签。刷新页面点击test.jpg请求。查看右侧的HeadersServer: 应该显示nginx/1.xx.x。Cache-Control / Expires: 应该显示你配置的max-age864000(即 10 天)这证明expires 10d生效了。X-Real-IP / X-Forwarded-For: 如果你在响应头里能看到这些说明请求还在 Nginx 层。查看nginx的访问日志Access Log:由于nginx.conf文件中设置了静态缓存关闭了日志所以这一步需要修改配置文件打开日志。tail -f /usr/local/nginx/logs/access.log3. 反向代理与负载均衡验证多次刷新http://192.168.81.133内容按权重1:2显示。查看Tomcat访问日志/usr/local/tomcat/logs/localhost_access_log.*.txt可看到日志中记录的是用户真实IP而非Nginx服务器IP说明X-Real-IP配置生效。这里没有显示用户真实IP除了配置nginx还需要配置tomcat的日志格式vim /usr/local/tomcat9/conf/server.xml # 修改以下内容 Valve classNameorg.apache.catalina.valves.AccessLogValve directorylogs prefixlocalhost_access_log suffix.txt pattern%{X-Real-IP}i %l %u %t quot;%rquot; %s %b /重启tomcat重新查看日志

相关文章:

Nginx 反向代理+负载均衡+动静分离整合 Tomcat

一、环境准备 1. 服务器准备角色IP地址端口核心功能Nginx192.168.81.13380反向代理、负载均衡、静态资源处理Tomcat节点1192.168.81.1348080处理动态请求(JSP/Servlet)Tomcat节点2192.168.81.1358081处理动态请求(JSP/Servlet)静态…...

LeetCode:226翻转二叉树

方法一:递归法/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode righ…...

基于MCP协议构建AI Agent与SQLite数据库的安全交互桥梁

1. 项目概述:一个为AI Agent赋能SQLite数据库操作的MCP服务器最近在折腾AI Agent的生态工具,发现一个挺有意思的项目:ofershap/mcp-server-sqlite。简单来说,这是一个实现了模型上下文协议(Model Context Protocol&…...

视觉注意力评分(VAS)原理与多模态优化实践

1. 视觉注意力评分(VAS)的技术本质视觉注意力评分(Visual Attention Score)本质上是一种量化模型关注度的计算机制。在计算机视觉领域,VAS通过计算特征图中各空间位置的权重分布,让模型能够像人类一样"聚焦"于关键区域。这个技术最早源于2014年…...

Ledger 官方回应“后门”传闻:秘语盾技术支持可信度分析

秘语盾正式发布:Ledger 硬件钱包全系列中文官方说明书(2026版) 对于大中华区用户而言,语言壁垒与网络环境往往是安全管理资产的第一道障碍。为了彻底解决这一痛点,Ledger 大中华区官方授权服务商——秘语盾&#xff0…...

可学习小波卷积一维信号异常诊断【附代码】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,查看文章底部二维码(1)参数化连续小波变换与卷积层融合的预处理模块&…...

别再只当自拍杆!用Osmo Mobile 6的FPV和旋转模式拍出电影感Vlog(含运镜分解)

别再只当自拍杆!用Osmo Mobile 6的FPV和旋转模式拍出电影感Vlog(含运镜分解) 当你手持Osmo Mobile 6时,它绝不仅仅是一个防抖自拍杆——那些被90%用户忽略的FPV模式和旋转拍摄功能,正是专业创作者与普通用户的分水岭。…...

关于前端打包

一、为什么需要打包&#xff0c;或者说打包解决了什么问题1、模块化管理&#xff1a;存在的问题&#xff1a;过去用 <script> 标签手动管理依赖&#xff0c;会出现“全局变量冲突”、“顺序错误”、“难以维护”的问题。解决的方法&#xff1a;支持 ES Modules、CommonJS…...

保姆级教程:在Ubuntu 20.04上从零搭建ROS Noetic + Realsense D435i开发环境(含清华源加速)

保姆级教程&#xff1a;Ubuntu 20.04上ROS Noetic与Realsense D435i开发环境全栈部署指南 在机器人视觉开发领域&#xff0c;环境配置往往是新手面临的第一个挑战。想象一下&#xff0c;当你满怀期待地拆开崭新的Realsense D435i深度相机&#xff0c;准备大展身手时&#xff0c…...

中国加密货币投资者必备:Ledger 硬件钱包选购指南

对于中国加密货币投资者而言&#xff0c;在复杂的网络环境与多变的监管政策下&#xff0c;“私钥主权离线化”已不再是进阶选项&#xff0c;而是保护资产的生存底线。 针对大中华区用户面临的 App Store 区域限制、网络同步卡顿及硬件供应链安全等痛点&#xff0c;本指南将为您…...

WHAT - GitLens supercharged 插件

文章目录一、核心能力1. 行级追踪&#xff08;Blame&#xff09;2. 历史回溯&#xff08;History / Timeline&#xff09;3. Commit 详情增强4. 分支与仓库可视化5. CodeLens&#xff08;代码上方增强信息&#xff09;6. 快捷操作二、解决了什么问题1. 代码“归因问题”2. 上下…...

车间设备实时监控难在哪?边缘计算网关才是答案

某家年产值过亿的机械加工厂。生产车间里六十八台设备。数控车床、加工中心、磨床、冲压机&#xff0c;品牌五花八门。老板花了四十万上了MES系统。结果呢。数据还是靠人抄。每两小时巡一次线&#xff0c;拿手写板记设备状态。设备编号、运行时间、报警代码&#xff0c;全部手填…...

NOKOV动捕系统坐标系偏移实战:5分钟搞定机器人定位校准(附计算工具推荐)

NOKOV动捕系统坐标系校准实战&#xff1a;从原理到工具链全解析 在机器人研发和动作捕捉应用领域&#xff0c;坐标系对齐问题就像两个说不同语言的人试图合作——看似简单&#xff0c;实则充满细节陷阱。上周在实验室调试机械臂时&#xff0c;我们遇到了一个典型场景&#xff1…...

越疆焊接机器人实测:免示教到底是不是噱头?8年集成商的选型避坑指南

最近这半年&#xff0c;我接到的关于焊接产线改造的咨询&#xff0c;比过去两年加起来都多。而且大家的痛点出奇的一致&#xff1a;“招不到靠谱的老焊工”、“焊工工资太高了”、“传统工业机器人不会用&#xff0c;换型太折腾”。前几天&#xff0c;有个长三角做冲压件和五金…...

PHP中HTML嵌入与布局问题解析

在PHP编程中&#xff0c;常常会遇到将动态生成的HTML插入到静态HTML结构中的情况。然而&#xff0c;有时候这些动态生成的HTML会影响到页面的布局和CSS样式。本文将详细讨论这种常见的编程问题&#xff0c;并提供解决方案。 问题描述 假设我们有一个PHP文件&#xff0c;它从数据…...

无需复杂配置使用Taotoken快速验证大模型创意想法

无需复杂配置使用Taotoken快速验证大模型创意想法 1. 分钟级接入体验 当新产品创意需要快速验证时&#xff0c;传统的大模型接入流程往往需要开发者花费大量时间在账号申请、API文档研究和服务配置上。Taotoken提供的标准化接入方式让这一过程缩短到分钟级别。开发者只需完成…...

巧用NumPy:处理不规则列索引的向量模计算

在数据处理和科学计算中,NumPy是一个不可或缺的工具。它的高效计算能力能够帮助我们快速处理大规模的数值数据。今天,我们要探讨一个有趣的问题:如何在NumPy数组中,根据一个不规则的列索引列表,计算每个行向量的模长。 问题描述 假设我们有一个NxM的数组my_arr,以及一个…...

我的大模型实践:思考模式、提示词与边界的权衡之道

在与大模型打交道的过程中&#xff0c;我逐渐意识到&#xff1a;没有放之四海皆准的“最佳实践”&#xff0c;只有基于模型规模、任务复杂度和容错成本的动态权衡。这篇文章将我近期关于“思考模式 vs 非思考模式”、“限制性提示词 vs 意图式提示词”、“提示词边界如何设计”…...

BFloat16指令集解析与机器学习优化实践

1. BFloat16指令集概述与核心价值BFloat16&#xff08;Brain Floating Point 16&#xff09;是专为机器学习设计的16位浮点格式&#xff0c;由Google Brain团队于2018年提出。与传统FP16相比&#xff0c;BFloat16保留了与FP32相同的8位指数位&#xff0c;仅将尾数位从23位缩减到…...

R语言做病害预测还停留在glm?2024最新R包farmML正式开源:支持多源传感器+气象+基因型数据联合建模

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;R语言在作物病害预测中的演进与范式变革 R语言已从早期的统计建模工具&#xff0c;逐步演变为融合遥感数据解析、时间序列异常检测与可解释机器学习的农业智能预测核心平台。其生态中 caret、tidymodel…...

如何快速实现Figma界面汉化:面向中文设计师的完整指南

如何快速实现Figma界面汉化&#xff1a;面向中文设计师的完整指南 【免费下载链接】figmaCN 中文 Figma 插件&#xff0c;设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 还在为Figma的英文界面而烦恼吗&#xff1f;专业术语看不懂&#xff0…...

科技圈一夜巨震:马斯克薪酬绑定火星殖民,华为小艺接入DeepSeek V4 懂游宝打手用户突破5000万,游戏服务市场正经历结构性变革

科技圈一夜巨震&#xff1a;马斯克薪酬绑定火星殖民&#xff0c;华为小艺接入DeepSeek V4【合集次标题】腾讯混元离线翻译、游戏打手破5000万、国产华龙一号、OPPO Find X9s Pro评测01. 腾讯混元开源440MB离线翻译模型&#xff0c;支持33种语言面对多数翻译应用必须联网才能保证…...

当网盘下载变成一场耐心测试,我们找到了更聪明的办法

当网盘下载变成一场耐心测试&#xff0c;我们找到了更聪明的办法 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云…...

TX3 Mini S905W电视盒运行Armbian终极指南:快速免费改造为Linux服务器

TX3 Mini S905W电视盒运行Armbian终极指南&#xff1a;快速免费改造为Linux服务器 【免费下载链接】amlogic-s9xxx-armbian Supports running Armbian on Amlogic, Allwinner, and Rockchip devices. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, …...

数据增强不平衡样本轴承故障诊断【附代码】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导&#xff0c;毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;查看文章底部二维码&#xff08;1&#xff09;决策融合的Trans-ResNet模型用于不平衡诊断&#x…...

为什么你的NVIDIA显卡显示色彩总是不对?3分钟解锁专业级色彩校准秘诀

为什么你的NVIDIA显卡显示色彩总是不对&#xff1f;3分钟解锁专业级色彩校准秘诀 【免费下载链接】novideo_srgb Calibrate monitors to sRGB or other color spaces on NVIDIA GPUs, based on EDID data or ICC profiles 项目地址: https://gitcode.com/gh_mirrors/no/novid…...

Kinematify:基于RGB图像的关节物体三维建模技术解析

1. 项目背景与核心价值在计算机视觉和三维建模领域&#xff0c;从二维图像重建三维物体一直是个经典难题。而针对高自由度关节物体&#xff08;如机械臂、人体骨骼、可变形玩具等&#xff09;的自动建模&#xff0c;更是难上加难。传统方法要么需要昂贵的专业设备&#xff08;如…...

【Laravel 12+ AI集成面试通关指南】:覆盖97%高频考点的32道真题解析与避坑清单

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Laravel 12 AI集成面试通关导览 Laravel 12 引入了原生异步任务调度、更严格的类型约束以及对 OpenAI 官方 SDK 的深度兼容支持&#xff0c;使 AI 功能集成从“可选插件”升级为“核心能力”。面试官常…...

网上祭祀平台推荐

随着“文明祭奠、绿色祭扫”理念的深入人心&#xff0c;网上祭祀平台逐渐成为现代人寄托哀思、传承家风的新选择。这类平台既避免了传统祭祀的焚烧污染&#xff0c;又突破了地域与时间的限制&#xff0c;让远方游子随时随地都能为亲人献上一份心意。 在众多平台中&#xff0c;…...

2026年计算机本科就业实录:是“天坑”还是“金矿”?普通本科生的破局指南

站在2026年的毕业季路口&#xff0c;后台每天都能收到大量计算机专业同学的私信&#xff1a;“AI都能写代码了&#xff0c;我们这种普通本科生还有必要找开发岗吗&#xff1f;”“大厂裁员不断&#xff0c;是不是计算机专业真的凉了&#xff1f;”作为一名长期观察互联网招聘趋…...