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

nginx + tomcat 搭建负载均衡、动静分离(tomcat多实例)

目录

一、配置nginx

1、安装ningx

2、在2台虚拟机上分别部署tomcat

三、配置tomcat1和2 动静分离配置

1、tomcat1配置

1、Tomcat1 server 配置

2、tomcat1 添加虚拟主机配置

2、Tomcat2  配置

1、Tomcat2 server 配置

2、tomcat2 添加虚拟主机配置

四、Nginx 配置负载均衡,反向代理 

1、设置静态页面

2、设置静态图片

3、配置负载均衡、反向代理


一个企业内部最基础的架构组成需要一个处理静态Web服务的页面,一个动态Web服务的页面和数据库
而我们实现了在Linux平台上,实现了Nginx + PHP 实现动静分离,而实际生产中往往一台nginx 需要“对应”多个动态处理的服务(及tomcat),所以如何将前端接收到的动态请求转交给后端多个tomcat处理,是我们此处研究的内容

一、配置nginx

1、安装ningx

systemctl stop firewalld.service 
systemctl disable firewalld.service 
setenforce 0

安装依赖环境包

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

创建运行用户、组

useradd -M -s /sbin/nologin nginx

上传nginx-1.15.9.tar.gz至/opt目录

cd /opt

tar xzvf nginx-1.15.9.tar.gz    解包

cd nginx-1.15.9/    准备编译

./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module

make j3 && make install    安装

路径优化

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

添加 Nginx 系统服务

vim /lib/systemd/system/nginx.service

[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/bin/kill -s HUP $MAINPID
ExecStop=/usr/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

chmod 754 /lib/systemd/system/nginx.service    给权限

systemctl enable nginx.service    开机启动

systemctl start nginx.service   启动nginx

nginx -t  检查nginx配置文件

二、在2台虚拟机上分别部署tomcat

systemctl stop firewalld

systemctl disable firewalld

setenforce 0

上传所需要的安装包到  /opt

pache-tomcat-9.0.16.tar.gz    jdk-8u201-linux-x64.rpm

查看java版本     java -version

rpm -ivh jdk-8u201-linux-x64.rpm   解jdk包

设置JDK的环境变量

vim /etc/profile.d/java.sh                                   #/etc/profile.d/  环境变量脚本目录    
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64    #输出指定java所需的类文件
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar        #可执行文件的位置
export PATH=$JAVA_HOME/bin:$PATH

source /etc/profile.d/java.sh  全局变量加载生效
java -version   再次查看版本会有所变化

cd /opt

tar zxvf apache-tomcat-9.0.16.tar.gz  解包
mv apache-tomcat-9.0.16 /usr/local/tomcat    #将解压后的包剪切到/usr/local 目录中,并改名为tomcat

ls /use/local/tomcat  查看

优化管理tomcat

ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/
ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/

启动、关闭tomcat

startup.sh   开启

ps -aux | grep 8080    检查开启

shutdown.sh  关闭

优化Tomcat

vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security

securerandom.source=file:/dev/urandom    修改117行

备份tomcat配置文件 cp /usr/local/tomcat/conf/server.xml /usr/local/tomcat/conf/server.xml.bak

三、配置tomcat1和2 动静分离配置

1、tomcat1配置

1、Tomcat1 server 配置

mkdir /usr/local/tomcat/webapps/test

vim /usr/local/tomcat/webapps/test/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>
</html>

2、tomcat1 添加虚拟主机配置

vim /usr/local/tomcat/conf/server.xml
   <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
   <Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" />        #新增

shutdown.sh 
startup.sh

2、Tomcat2  配置

1、Tomcat2 server 配置

2、tomcat2 添加虚拟主机配置

四、Nginx 配置负载均衡,反向代理 

1、设置静态页面

2、设置静态图片

3、配置负载均衡、反向代理

vim /usr/local/nginx/conf/nginx.conf
......
http {
......
 #gzip  on;  
    #配置负载均衡的服务器列表,weight参数表示权重,权重越高,被分配到的概率越大
    upstream tomcat {                ##名称中不要加"_"
      server 192.168.226.129:8080 weight=1;
      server 192.168.226.132:8080 weight=1;

    }

 server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        #配置Nginx处理动态页面请求,将 .jsp 文件请求转发到Tomcat 服务器处理

        location ~ .*\.jsp$ {
            proxy_pass http://tomcatserver;
   #这里不要加“_”  
            #设置后端的 Web 服务器可以获取远程客户端的真实IP         #设定后端的Web服务器接收到的请求访问的主机名(域名或IP、端口),默认host的值为proxy_pass指令设置的主机名
            proxy_set_header HOST $host;
            #把$remote_addr赋值给X-Real-IP(自定义),来获取源IP
            proxy_set_header X-Real-IP $remote_addr;
            #在Nginx作为代理服务器时,设置的IP列表,会把经过的机器ip,代理机器ip都记录下来
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }

location ~* \.(gif|jpg|swf|jpeg|bmp|ico)$ {     #识别图片
           root /usr/local/nginx/html/img;
           expires   1d;
           }     
  
        location / {
            root html;
            index  index.html index.htm;
        }

在配置了nginx中访问 

 

相关文章:

  • CSRF(跨站请求伪造)攻击和预防
  • 【都 Java17 了,还不了解 Java 8 ? 】一文带你深入了解 Java 8 新特性
  • 解决国产机SVN连接失败的问题
  • MySQL 存储过程创建指定表结构
  • 我们这样的人
  • < Linux > 进程概念(2)
  • Qt5开发从入门到精通——第四篇十二节(不规则窗体)
  • MySQL 5.7.x--命令行自带帮助文档的使用,超级棒!!!
  • 手撕前端面试题【javascript】
  • Qt5开发从入门到精通——第四篇十三节(程序启动画面 )
  • postman+Newman+jenkins实现接口自动化测试持续集成
  • 阿里达摩院(研究型实习生)
  • 汽车电子常用外围硬件电路设计
  • 猿创征文|半导体二极管
  • 《机器学习实战》学习笔记(十一)
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • Cumulo 的 ClojureScript 模块已经成型
  • DataBase in Android
  • Github访问慢解决办法
  • httpie使用详解
  • Mocha测试初探
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • XForms - 更强大的Form
  • Zsh 开发指南(第十四篇 文件读写)
  • 服务器从安装到部署全过程(二)
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 利用DataURL技术在网页上显示图片
  • 前端设计模式
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 世界上最简单的无等待算法(getAndIncrement)
  • 突破自己的技术思维
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 进程与线程(三)——进程/线程间通信
  • ​业务双活的数据切换思路设计(下)
  • #stm32整理(一)flash读写
  • (1)(1.9) MSP (version 4.2)
  • (poj1.2.1)1970(筛选法模拟)
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (蓝桥杯每日一题)love
  • (四)库存超卖案例实战——优化redis分布式锁
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • ***监测系统的构建(chkrootkit )
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .net 调用php,php 调用.net com组件 --
  • @angular/cli项目构建--Dynamic.Form
  • @requestBody写与不写的情况
  • [android] 切换界面的通用处理
  • [APIO2012] 派遣 dispatching
  • [Bugku]密码???[writeup]