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


    目录

    一、配置nginx

    1、安装ningx

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

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

    1、tomcat1配置

    1、Tomcat1 server 配置

    2、Tomcat2  配置

    1、Tomcat2 server 配置

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

    1、设置静态页面


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

    一、配置nginx

    1、安装ningx

    1. systemctl stop firewalld.service
    2. systemctl disable firewalld.service
    3. setenforce 0
    1. 安装依赖环境包
    2. yum install -y pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
    1. 创建运行用户、组
    2. useradd -M -s /sbin/nologin nginx
    1. 上传nginx-1.15.9.tar.gz至/opt目录
    2. cd /opt
    3. tar xzvf nginx-1.15.9.tar.gz 解包
    4. cd nginx-1.15.9/ 准备编译
    5. ./configure \
    6. --prefix=/usr/local/nginx \
    7. --user=nginx \
    8. --group=nginx \
    9. --with-http_stub_status_module
    10. make j3 && make install 安装
    1. 路径优化
    2. ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
    1. 添加 Nginx 系统服务
    2. vim /lib/systemd/system/nginx.service
    3. [Unit]
    4. Description=nginx
    5. After=network.target
    6. [Service]
    7. Type=forking
    8. PIDFile=/usr/local/nginx/logs/nginx.pid
    9. ExecStart=/usr/local/nginx/sbin/nginx
    10. ExecReload=/usr/bin/kill -s HUP $MAINPID
    11. ExecStop=/usr/bin/kill -s QUIT $MAINPID
    12. PrivateTmp=true
    13. [Install]
    14. WantedBy=multi-user.target
    1. chmod 754 /lib/systemd/system/nginx.service 给权限
    2. systemctl enable nginx.service 开机启动
    3. systemctl start nginx.service 启动nginx
    4. nginx -t 检查nginx配置文件

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

    1. systemctl stop firewalld
    2. systemctl disable firewalld
    3. setenforce 0
    1. 上传所需要的安装包到 /opt
    2. pache-tomcat-9.0.16.tar.gz jdk-8u201-linux-x64.rpm
    1. 查看java版本 java -version
    2. rpm -ivh jdk-8u201-linux-x64.rpm 解jdk包
    1. 设置JDK的环境变量
    2. vim /etc/profile.d/java.sh #/etc/profile.d/ 环境变量脚本目录
    3. export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64 #输出指定java所需的类文件
    4. export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar #可执行文件的位置
    5. export PATH=$JAVA_HOME/bin:$PATH
    1. source /etc/profile.d/java.sh 全局变量加载生效
    2. java -version 再次查看版本会有所变化
    1. cd /opt
    2. tar zxvf apache-tomcat-9.0.16.tar.gz 解包
    3. mv apache-tomcat-9.0.16 /usr/local/tomcat #将解压后的包剪切到/usr/local 目录中,并改名为tomcat
    4. ls /use/local/tomcat 查看
    1. 优化管理tomcat
    2. ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/
    3. ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/

    启动、关闭tomcat

    1. startup.sh 开启
    2. ps -aux | grep 8080 检查开启
    3. shutdown.sh 关闭
    1. 优化Tomcat
    2. vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security
    3. 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 配置

    1. mkdir /usr/local/tomcat/webapps/test
    2. vim /usr/local/tomcat/webapps/test/index.jsp #动态页面的配置
    3. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    4. <html>
    5. <head>
    6. <title>JSP test1 page</title>
    7. </head>
    8. <body>
    9. <% out.println("动态页面 1,http://www.test1.com");%>
    10. </body>
    11. </html>

     2、tomcat1 添加虚拟主机配置

    1. vim /usr/local/tomcat/conf/server.xml
    2. <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
    3. <Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" /> #新增
    4. shutdown.sh
    5. startup.s

     

    2、Tomcat2  配置

    1、Tomcat2 server 配置

     

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

    1、设置静态页面

     2、设置静态图片

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

    1. vim /usr/local/nginx/conf/nginx.conf
    2. ......
    3. http {
    4. ......
    5. #gzip on;
    6. #配置负载均衡的服务器列表,weight参数表示权重,权重越高,被分配到的概率越大
    7. upstream tomcat { ##名称中不要加"_"
    8. server 192.168.226.129:8080 weight=1;
    9. server 192.168.226.132:8080 weight=1;
    10. }
    11. server {
    12. listen 80;
    13. server_name localhost;
    14. #charset koi8-r;
    15. #access_log logs/host.access.log main;
    16. #配置Nginx处理动态页面请求,将 .jsp 文件请求转发到Tomcat 服务器处理
    17. location ~ .*\.jsp$ {
    18. proxy_pass http://tomcatserver; #这里不要加“_”
    19. #设置后端的 Web 服务器可以获取远程客户端的真实IP #设定后端的Web服务器接收到的请求访问的主机名(域名或IP、端口),默认host的值为proxy_pass指令设置的主机名
    20. proxy_set_header HOST $host;
    21. #把$remote_addr赋值给X-Real-IP(自定义),来获取源IP
    22. proxy_set_header X-Real-IP $remote_addr;
    23. #在Nginx作为代理服务器时,设置的IP列表,会把经过的机器ip,代理机器ip都记录下来
    24. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    25. }
    26. location ~* \.(gif|jpg|swf|jpeg|bmp|ico)$ { #识别图片
    27. root /usr/local/nginx/html/img;
    28. expires 1d;
    29. }
    30. location / {
    31. root html;
    32. index index.html index.htm;
    33. }

  • 相关阅读:
    四元数求导
    文心一言 VS 讯飞星火 VS chatgpt (116)-- 算法导论10.3 1题
    利用SQL语句插入、更新、删除数据表中的数据
    做个简单的电脑桌面窗体插件,通过.exe执行命令就可以执行
    虹科方案|国庆出游季,古建筑振动监测让历史古迹不再受损
    vue3 vite4 安装eslint进行初始化时报错
    绘图软件 OmniGraffle mac中文版特点说明
    算法自学__树的重心
    redis数据一致性问题还稀里糊涂?看这篇就够了
    牛客网-《刷C语言百题》第五期
  • 原文地址:https://blog.csdn.net/z20021111/article/details/126715136