Nginx+Tomcat群集

一.实验环境

 二.安装多台Tomcat服务器

1.在安装Tomcat之前必须先安装JDK。

        JDK的全称是Java Development Kit,是sun公司提供的JAVA语言的软件开发工具包,其中包含Java虚拟机(JVM),编写好的Java源程序经过编译可形成Java字节码,只要安装了JDK,就可以利用jvm解释这些字节码文件,从而保证了Java的跨平台性。

yum -y install java
java -version         #查看版本

2.安装Tomcat 

解压二进制文件

tar zxvf apache-tomcat-9.0.8.tar.gz 
mv apache-tomcat-9.0.8 /usr/local/tomcat8

 3.启动Tomcat

[root@localhost ~]# /usr/local/tomcat8/bin/startup.sh
[root@localhost ~]# netstat -anpt | grep java
tcp6       0      0 :::8080                 :::*                    LISTEN      12182/java          
tcp6       0      0 :::8009                 :::*                    LISTEN      12182/java          
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      12182/java     

4.创建测试网页

[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>

5.修改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>

6.重启Tomcat

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

 7.测试

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

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

 三.安装Nginx

1.下载相关组件

yum -y install pcre-devel bzip2-devel gcc*

备注:

  • pcre-devel: 提供PCRE库的开发文件,用于支持NGINX的正则表达式功能。
  • zlib-devel: 提供zlib库的开发文件,用于支持NGINX的压缩和解压缩功能。
  • openssl-devel: 提供OpenSSL库的开发文件,用于支持NGINX的HTTPS和SSL/TLS功能。
  • gcc: GNU Compiler Collection,用于编译源代码,包括NGINX本身。

2.创建Nginx的程序用户

useradd -M -s /sbin/nologin nginx

备注: -M :不为用户创建家目录;-s /sbin/nologin: 这个选项将新用户的登录 shell 设置为 /sbin/nologin,即禁止该用户登录系统。

3.配置和安装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

备注:./configure 是一个常见的命令,通常用于配置和准备软件包的安装,执行完成后会生成一个叫Makefile的文件,--prefix指定文件安装路径;--user和--group指定 Nginx 在运行时所使用的用户和组;make编译软件;make install安装。

  • ln: 是用于创建链接的命令。
  • -s: 是 ln 命令的一个选项,表示创建符号链接(软链接)。
  • /usr/local/nginx/sbin/nginx: 是源文件或目录,这里指向的是 Nginx 可执行文件的路径。
  • /usr/local/sbin/: 是目标路径,表示在 /usr/local/sbin/ 目录下创建符号链接。

因此,执行这条命令后,将会在 /usr/local/sbin/ 目录下创建一个名为 nginx 的符号链接,指向 /usr/local/nginx/sbin/nginx 这个实际的可执行文件。这样做的目的通常是为了方便在命令行直接执行 nginx 命令,而无需输入完整的路径。 

4.编辑测试网页文件

[root@localhost ~]# vim /usr/local/nginx/html/index.html

<body>

<h1>静态页面</h1>

<p>这是个静态页面</p> 6

</body>

5.添加图片

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

[root@nginx ~]# cp /root/logo.jpg /usr/local/nginx/html/img

6.修改主配置文件

[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.xml配置项中添加
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地址

7.启动nginx

[root@localhost ~]# nginx

8.修改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的日志中。

9.测试

浏览器打开网站

(1)静态网站测试

http://192.168.10.101

(2)动态网站测试

http://192.168.10.101/index.jsp

再次访问

 

(3)查看tomcat的日志文件

相关推荐

  1. Zookeeper+Kafka

    2024-07-10 09:02:06       38 阅读
  2. Redis-主从、哨兵、

    2024-07-10 09:02:06       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 09:02:06       4 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 09:02:06       5 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 09:02:06       4 阅读
  4. Python语言-面向对象

    2024-07-10 09:02:06       4 阅读

热门阅读

  1. 静态搜索iOS动态链接函数的调用位置

    2024-07-10 09:02:06       10 阅读
  2. demon drone 200无人机标定流程

    2024-07-10 09:02:06       9 阅读
  3. Sql 导入到 Excel 工具

    2024-07-10 09:02:06       8 阅读
  4. 关于学习方法的优化

    2024-07-10 09:02:06       9 阅读
  5. Nginx重定向

    2024-07-10 09:02:06       11 阅读
  6. Apache Flink 任意 JAR 包上传漏洞利用及防范策略

    2024-07-10 09:02:06       8 阅读
  7. QTreeWidget 树遍历

    2024-07-10 09:02:06       9 阅读