这篇文章我们主要是介绍 nginx
的使用,通过介绍其中的相关概念和具体使用,让我们能够对 nginx
有较为清晰的认识,下面具体来看。
1.介绍
nginx
是一个高性能的 HTTP
服务器和反向代理服务器,是同类型服务器中并发能力最好的,目前很多网站都在使用,我们平时部署项目到 Tomcat
服务器中时,单机 Tomcat
能承受的访问是十分有限的,这时候使用 nginx
做负载均衡,就能极大地提高服务接受访问请求的次数,同时,使用 nginx
这种软负载方式来做负载均衡,成本几乎为 0
,因此是十分划算的,最后 nginx
一般应用于如下场景:
1.HTTP服务器;
2.配置虚拟机;
3.反向代理,做负载均衡,将请求转发给不同的服务器。
说到了代理,那我们在这里说明一下代理的概念,常用的代理有正向代理和反向代理以及透明代理,下面我们分别进行说明。
正向代理
一般情况,不加特殊说明的话,我们平时说的代理就是正向代理了。正向代理就是一个位于客户端和原始服务器之间的服务器,当客户端想获取原始服务器上的资源时,会向代理服务器发送一个请求,请求目标为原始服务器,代理服务器则转发该请求,并将原始服务器响应回来的内容返回给客户端。其实,这里的正向代理就是代替客户端访问原始服务器了。在此过程中客户端必须要进行一些特殊的设置才能使用正向代理。
那为什么要使用代理服务器呢?主要有以下几个作用:
1.访问客户端本来无法访问的服务器。有时候客户端与原始服务器之间的链路是断的,但是代理服务器和原始服务器之间的链路是通的,这时候我们通过代理服务器便可以访问得到原始服务器了,比较好理解的例子就是我们在国内想要访问谷歌了,因为链路不通所以访问不了,这时候就只能通过代理来进行访问了。
2.加速访问原始服务器。主要是指当客户端到原始服务器是低宽带链路,而客户端到代理服务器,代理服务器到原始服务器是高宽带链路时,这时候使用代理便可以提高我们的访问速度。
3.缓存作用。当客户端通过代理服务器访问原始服务器上面的某个资源时,如果该资源在之前已经有人通过代理服务器访问过,那么就会在代理服务器上面保存有缓存,这时候代理服务器就会直接将缓存的资源返回给客户端,而不必再去请求原始服务器了。
4.客户端访问授权。这个使用比较多的就是某些公司会通过代理设置员工访问互联网的权限,有的员工有授权,那便可以访问互联网,有的没有授权,则不能访问互联网。
5.隐藏访问者的行踪。在我们使用代理服务器去访问原始服务器上面的资源时,原始服务器其实不知道实际访问自己的是客户端,而以为是和自己进行交互的代理服务器,这样客户端便隐藏了自己的行踪。
反向代理
反向代理和正向代理正好相反,对于客户端来说,代理服务器就相当于是原始服务器,并且客户端不需要进行什么特殊的设置,客户端向代理发送请求时是发送的普通请求,代理服务器将请求转发给原始服务器,并将原始服务器的响应返回给客户端。
反向代理的作用主要有以下几个:
1.保护和隐藏原始服务器。在反向代理中,客户端一直以为自己访问的就是原始服务器,其实是代理服务器,是代理服务器将客户端的请求转发给原始服务器,然后再将响应返回给客户端;同时还可以在代理服务器和原始服务器之间设置防火墙只允许代理服务器访问原始服务器,这样的话就能保证原始服务器的安全。
2.负载均衡。当反向代理服务器不止一个的时候,我们可以将他们做成集群,这样的话我们就可以使用不同的代理服务器去响应不同的用户请求了,而且每台代理服务器上面同样也有缓存,如果代理服务器上面的资源之前已经有用户请求过,那下次再有请求过来时就可以直接使用服务器上面的缓存,不用每次都去请求原始服务器了,这样就能够减轻原始服务器的压力了。
透明代理
透明代理中,客户端根本感受不到代理的存在,当客户端向原始服务器发送请求时,透明代理会修改客户端发送的请求报文,并传送客户端的真实 IP
地址,具体使用的例子则是有的公司使用的行为管理软件,当客户端向原始服务器发送请求时,代理服务器会根据自身策略拦截并修改请求报文,并作为实际的请求方向原始服务器发送请求,当接收到原始服务器的响应时,代理服务器会将自身设置允许的报文返回给客户端,如果代理服务器不允许访问某些原始服务器,那客户端便接收不到原始服务器所响应回来的信息。
2.安装
下面我们开始介绍 nginx
的安装,nginx
有 Linux
和 Windows
两个版本的安装包,都可以在 nginx
的主页 http://nginx.org/
下载页面中下载得到,我们这里介绍的安装版本为 nginx-1.8.0
版本,下面分别开始介绍。
2.1 Windows版本安装
在 Windows
版本安装中我们只需要将下载得到的 nginx-1.8.0.zip
安装包解压到我们本地的某个磁盘目录下,就可以使用了,我这里是直接解压在 D
盘,因此在 D
盘会有一个 nginx-1.8.0
目录,在该目录中会有一个 nginx.exe
可执行程序,双击执行的话会在 Windows
任务管理器中看到两个进程,一个主进程,一个子进程,除了看进程之外,我们还可以在浏览器地址栏中输入 localhost:80
进行访问,如果能看到 nginx
的欢迎页面,则表示我们 nginx
启动成功了。
2.2 Linux版本安装
首先我们先将 nginx
的安装包 nginx-1.8.0.tar.gz
上传到我们想要安装的目录中,我这里使用的目录是 /usr/local/
,完成了第一步之后,第二步便是解压安装包了,我们可以使用命令
tar -zxf nginx-1.8.0.tar.gz
执行完上面的命令,我们就可以在同级目录中看到一个解压目录,名称为 nginx-1.8.0
,一般情况下,这时候都是进入目录进行编译和安装操作了,但是这里有点不同的是需要先使用 configure
命令得到 Makefile
文件,然后我们才能进行编译和安装操作,因此我们应该先执行 configure
命令,但是在执行该命令之前,我们需要依赖一些其它的库,因此我们需要先安装依赖的库,主要为以下这些:
gcc
安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:
安装命令:yum install gcc-c++
PCRE
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。
安装命令:yum install -y pcre pcre-devel
注:pcre-devel是使用pcre开发的一个二次开发库。nginx也需要此库。
zlib
zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
安装命令:yum install -y zlib zlib-devel
openssl
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
安装命令:yum install -y openssl openssl-devel
上面这些便是安装 nginx
所需要依赖的所有库了,安装好依赖库之后我们就可以接着安装 nginx
了,接下来便是第三步,我们需要进入到 nginx-1.8.0
目录中,然后执行 configure
命令得到 Makefile
文件,命令如下:
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
执行上面这个命令之前需要注意的一点就是,上面将临时文件目录指定为 /var/temp/nginx
,所以我们需要先在 /var
下创建 temp
及 nginx
目录,可以使用如下的命令进行创建:
mkdir -p /var/temp/nginx
这样创建好临时文件目录之后便可以执行上面的 configure
命令了,执行完之后我们就可以在 nginx-1.8.0
目录中看到 Makefile
文件了,下面我们就可以执行编译和安装操作了。
因此第四步便是编译操作,直接执行 make
命令就可以了;接下来便是第五步安装操作,执行 make install
命令就可以了,到这里,nginx
所有的安装步骤就都完成了,我们可以在 /usr/local/
目录下看到一个 nginx
目录,这便是我们安装完成得到的 nginx
了,进入该目录我们可以看到有 3
个目录,分别如下:
conf:里面保存的是nginx的配置文件;
html:里面保存的是html代码;
sbin:里面只有一个nginx脚本,我们可以通过它来启动和关闭nginx.
如果想启动 nginx
的话,则需要进入到 sbin
目录,然后执行 ./nginx
命令,这样就可以启动 nginx
了,如何判断是否启动成功呢?可以使用 ps -ef | grep nginx
命令,查看是否有 nginx
的进程,成功时会看到有两个 nginx
的进程,一个主进程,一个子进程;其实我们还可以通过浏览器访问的方式来确认是否启动成功了,比如我安装的 nginx
是安装在 192.168.245.128
主机,那我就可以在浏览器中输入 http://192.168.245.128:80/
进行访问,如果能看到 nginx
的欢迎页面,同样表示 nginx
启动是成功的。
除了上面的启动命令,nginx
同样可以进行关闭和重新加载配置文件的操作,对应的命令如下:
关闭nginx需要使用:
nginx -s stop 相当于找到nginx进程kill。
退出命令:
nginx -s quit 等程序执行完毕后关闭,建议使用此命令。
重新加载配置文件:
nginx -s reload 可以不关闭nginx的情况下更新配置文件.
以上就是 nginx
进行安装的所有步骤和注意事项了。
3.配置与使用
下面我们开始介绍 nginx
的配置与使用,为了方便我们直接操作 Windows
环境下面的 nginx
进行测试和说明,nginx
的相关配置主要在 nginx
安装目录中的 conf
目录下的 nginx.conf
文件,打开该文件,发现除去很多注释的内容之后,真正使用的内容是很少的,我们需要重点关注的是:
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
下面我们对上面配置文件的各部分分别进行说明,
listen 80;
表示服务监听的端口号
server_name localhost;
表示服务器所在的地址,可以是IP地址,也可以是域名
location / {
root html;
index index.html index.htm;
}
表示主页资源所在的地址,其中的 root
标识的是主页资源所在的目录,这里就是 nginx
安装目录中的 html
目录了,index
标识的是主页资源文件的文件名称,可以是 index.html
,也可以是 index.htm
。
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
这便是标识的错误页面所在的地址了,同样的 root
标识的是错误页面所在的目录。
下面我们来看 nginx
虚拟机配置,也就是作为一个 http
服务器的配置。
3.1 nginx虚拟机配置
nginx
虚拟机配置主要是涉及下面三个方面的配置:
1.IP配置;
2.域名配置;
3.端口配置。
先看第 1
个 IP
配置,我们可以针对 server_name
部分进行修改,这里为了看到测试效果,我们可以增加一个配置,之前是针对 localhost
的,增加一个直接针对 IP
地址的,具体配置文件如下:
server {
listen 80;
server_name localhost;
location / {
root html_local;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80;
server_name 192.168.1.38;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
下面的配置中 server_name 192.168.1.38;
就是直接针对 IP
地址的,这里的 IP
地址我还是使用的本地 IP
地址,这样便于测试,还需要注意的是,为了看出我们访问 localhost
和直接访问 IP
地址的差别,我们在第一个配置中,标识主页资源时是定位在 html_local
目录的,这里需要将 nginx
安装目录中的 html
目录复制一份,然后改名为 html_local
,当然为了更清楚看到差别,我们可以对 html_local
目录中的 index.htm
也进行一些修改,比如将网页内容修改为:
<h1>Welcome to nginx_local!</h1>
这样我们访问时就能看到明显的区别了,也能验证到我们的配置是有效的。验证方法就是在浏览器中输入 http://localhost/
和 http://192.168.1.38/
时就能看到页面中明显的不同了。
再看第 2
个域名配置,在讲对 nginx
作为 http
服务器进行域名配置之前,我们需要先知道平时在访问网站时是如何通过域名进行访问的,比如我们经常访问的百度 https://www.baidu.com/
,当我们在浏览器地址栏输入这个域名进行访问时,到底发生了什么呢?其实在访问这个域名时,会先到 DNS
服务器找到我们访问域名所对应的 IP
地址,然后再访问 IP
地址进行资源请求,因此到最后我们还是访问的 IP
地址。那我们在对本地 nginx
进行域名配置时,如何才能看到我们想要的效果呢?其实在我们本地电脑中,不管是 Windows
系统还是 Linux
系统,它们都有一个本地域名解析文件,也就是一个 hosts
文件,相当于是在本地缓存的域名与 IP
地址的对应关系,我们可以通过修改这个文件得到我们想要的效果,该文件所在的目录如下:
Windows系统:C:\Windows\System32\drivers\etc
Linux系统:/etc
我们在对 nginx
进行域名配置时想要看到的效果主要就是,当我们访问两个域名时,可以看到不同的页面效果,比如我们访问 abc.com
和 def.com
时,可以看到访问页面效果的不同,那这时候我们就可以在 hosts
文件中加入下面两行配置:
127.0.0.1 abc.com
127.0.0.1 def.com
这样当我们访问 abc.com
和 def.com
这两个域名时,其实访问的 IP
地址还是本机的,同时我们还需要修改 nginx
的配置文件,主要修改内容如下:
server {
listen 80;
server_name abc.com;
location / {
root html_local;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80;
server_name def.com;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
这样当我们在浏览器中访问 http://abc.com/
和 http://def.com/
时,就能看到不同的页面效果了,也就证明我们修改的配置是有效的。
第 3
个便是端口的配置了,之前我们都是监听的 80
端口,由于 http
协议默认是使用的 80
端口,因此我们在浏览器地址栏中输入 http://localhost/
和 http://localhost:80/
进行访问是一样的效果,我们如果想要改变监听的端口,其实也只需要修改 listen
这个配置,比如改成如下的配置:
server {
listen 8001;
server_name localhost;
location / {
root html_local;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
那修改完成之后我们访问时就需要在浏览器地址栏输入 http://localhost:8001/
进行访问了,这就是 nginx
作为 http
服务器进行端口配置的演示了。
3.2 nginx反向代理
下面我们来看 nginx
作为反向代理服务器的使用,为了本地演示方便,我们可以将 nginx
作为本地 Tomcat
服务器的代理来使用,我们知道,Tomcat
默认的端口号是 8080
,当启动成功之后就可以在浏览器地址栏中输入 http://localhost:8080/
进行访问了,这时候我们就可以看到 Tomcat
默认的主页了,其实就是 Tomcat
安装目录中 webapps
目录下的 ROOT
工程的 index.jsp
页面,上面便是访问 Tomcat
时主要的内容了,下面看如何将 nginx
作为反向代理来使用。
首先需要在 nginx
的配置文件中加一段反向代理的配置,如下:
#反向代理配置
upstream server_list{
server localhost:8080; #这个是Tomcat的访问路径
}
这里配置中的 server
指示的就是我们本地 Tomcat
的访问路径,然后之前的配置还需要在定位资源的 location
节点加一个 proxy_pass
的设置,表示当有请求访问 nginx
时,会将请求转发到哪里,配置如下:
server {
listen 80;
server_name localhost;
location / {
root html_local;
proxy_pass http://server_list/;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
这样的话,当我们在浏览器中访问 http://localhost/
时,看到的将不再是 nginx
的欢迎页面,而是 Tomcat
的默认主页了,这里我们就实现了 nginx
作为反向代理服务器的配置。这里可能会有疑问,为什么不直接访问 Tomcat
呢?还要先访问 nginx
然后再访问 Tomcat
,原因其实是因为实际生产中 Tomcat
的数量往往不是只有一台,而是多台的集群,这时候就需要使用 nginx
作为 Tomcat
集群的访问入口了。其实我们在本地也可以进行测试,为了方便,我们可以直接将 Tomcat
的安装目录复制一遍,然后直接在原来的目录名称中加上 _bak
进行区分,然后修改第二个 Tomcat
的端口号为 8081
,以防止和第一个 Tomcat
的端口号冲突,同时为了方便看出是访问的 Tomcat
集群中的不同服务器,我们可以将两个 Tomcat
安装目录中 webapps
目录下的 ROOT
工程的 index.jsp
页面稍微进行一些修改,比如第一个 Tomcat
的主页面标题修改为:
<title><%=request.getServletContext().getServerInfo() %>_main</title>
第二个 Tomcat
的主页面标题修改为:
<title><%=request.getServletContext().getServerInfo() %>_back</title>
这样的话,如果我们的配置是正确的话,就能在页面中看到两种不同的页面标题。当然,在测试之前我们还需要在 nginx
的配置文件中加一些配置,就是如下:
#反向代理配置
upstream server_list{
server localhost:8080; #这个是Tomcat的访问路径
server localhost:8081; #这是另外一个Tomcat的访问路径
}
增加上另外一个 Tomcat
的访问路径,然后重启 nginx
服务器就好了,这时候我们还是在浏览器中输入 http://localhost/
进行访问,当我们访问多次时,就可以看到页面的标题有 main
和 back
两种了,这样的话我们就完成了 nginx
作为反向代理服务器的配置。
3.3 nginx负载均衡
下面我们再看 nginx
负载均衡的内容,其实负载均衡就是将一台服务器承受的访问压力分摊到多台服务器上,这样使得服务能够更加稳定的运行,其实在上节反向代理中,我们使用 nginx
作为两台服务器集群的代理,本身就已经实现了负载均衡,只是因为没有设置权重,两台服务器承受的访问压力是均分的,在实际生产中,如果我们想让某些服务器承受更多的访问压力,那就可以进行权重的设置,权重的设置可以如下所示:
#反向代理配置
upstream server_list{
server localhost:8080 weight=10; #这个是Tomcat的访问路径
server localhost:8081 weight=5; #这是另外一个Tomcat的访问路径
}
根据上面配置中 weight
所标识的权重,就可以看出第一台 Tomcat
服务器会承受更多的访问压力,而且它们分配的压力是根据两者配置的权重比值进行计算的,默认情况便是多台服务器进行均分了,这就是 nginx
的负载均衡相关内容了。
3.4 多台服务器session共享问题
在上面介绍的内容中,我们可以看到,使用多台 Tomcat
服务器作为集群,可以减轻服务器的访问压力,以便提供更稳定的服务,但是这时候也会产生一个问题,就是 session
共享问题,比如我们将用户登录信息保存在 session
当中,当我们在一台 Tomcat
登录成功之后,接下来再进行其它请求时,如果这时访问的是别的 Tomcat
服务器,因为别的 Tomcat
是没有保存用户登录信息的 session
的,因此就会判断为未登录状态,这种情况显然就是一个异常情况了,我们需要想办法进行解决,我们现在先测试一下该问题,我们可以创建一个 myweb
工程,然后其中目录结构为:
WEB-INF
web.xml
index.jsp
WEB-INF
目录以及其中的 web.xml
文件是用来描述工程信息的,index.jsp
文件则是工程的主页,我们也是在这个页面中获取 session
并进行展示,首先我们看 web.xml
文件的内容,如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"
metadata-complete="true">
<display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description>
</web-app>
然后就是 index.jsp
文件的内容,内容如下:
<!DOCTYPE html>
<%@ page session="true" %>
<html lang="en">
<head>
<title>tomcat_main</title>
</head>
<body>
tomcat:tomcat_main<br>
sessionid:<%=session.getId()%>
</body>
</html>
这样的话 myweb
工程便新建好了,我们将这个工程放到两个 Tomcat
服务器安装目录下的 webapps
目录下,就是相当于部署到两个 Tomcat
服务器当中了,为了后面看到两个服务器页面的差别,我们将部署到 back
的 Tomcat
服务器工程的 index.jsp
主页面稍微进行一些修改。以便于区分:
<!DOCTYPE html>
<%@ page session="true" %>
<html lang="en">
<head>
<title>tomcat_bak</title>
</head>
<body>
tomcat:tomcat_bak<br>
sessionid:<%=session.getId()%>
</body>
</html>
这时候我们就可以启动两个 Tomcat
服务器和 nginx
服务器,然后在浏览器地址栏输入 http://localhost/myweb/index.jsp
进行访问,然后访问多次,就可以在页面中看到两台 Tomcat
服务器中 myweb
工程的 index.jsp
上面展示 sessionId
的不同,如下:
tomcat:tomcat_main
sessionid:E6D9758E537F779B921E1B69BD8CE2BB
tomcat:tomcat_bak
sessionid:3069BD816DFE36536C15B36D8DD5E701
很显然,这时候两台 Tomcat
服务器上面的 session
是不一样的,也就是 session
在集群中是不共享的。那如何解决这个问题呢?其实可以将 Tomcat
集群中的 session
交给 Redis
管理,这样的话就能实现 session
共享了,使用 Redis
管理 session
不需要我们对代码进行修改,只需要增加一些依赖包和配置文件,下面详细来看。
使用 Redis
实现 session
共享最重要的依赖包就是 tomcat-redis-session-manager-1.2-tomcat-7-java-7.jar
包了,我们可以在这个页面进行下载:
https://github.com/jcoleman/tomcat-redis-session-manager/downloads
其中它会根绝 Tomcat
版本的不同提供不同的 jar
包供我们使用,有了上面这个 jar
包之后,我们还需要其它一些 jar
包,比如操作 Redis
数据库的 jedis jar
包,总结下来一共需要下面这 4
个 jar
包,而且我使用的这 4
个也是不会有冲突的:
commons-pool-1.6.jar
commons-pool2-2.2.jar
jedis-2.2.0.jar
tomcat-redis-session-manager-1.2-tomcat-7-java-7.jar
jar
包确定之后,我们就需要将这四个 jar
包放到 Tomcat
服务器当中,也就是放到 Tomcat
集群中每个 Tomcat
安装目录中的 lib
目录中,直接拷贝放到里面就好,操作好 jar
包之后,我们还需要增加 Tomcat
连接 Redis
数据库的配置,这里便需要在 Tomcat
安装目录下的 conf
目录中的 context.xml
文件中增加一段配置了,配置内容如下:
<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve"/>
<Manager className="com.radiadesign.catalina.session.RedisSessionManager"
host="10.21.20.227"
port="6385"
database="0"
maxInactiveInterval="60"
password="admin"
/>
很显然这里就是配置的连接 Redis
数据库属性了,我们主要是需要根据实际情况,修改 Redis
的主机、端口、用户名和密码信息就好了,这时候我们再重启两个 Tomcat
集群和 nginx
服务器,这时候访问 http://localhost/myweb/index.jsp
就能看到页面中两个 Tomcat
服务器显示的 sessionId
都是一样的了,也就实现了 session
的共享。
tomcat:tomcat_main
sessionid:35F785B9C2989BE66EFABCCB973ECEED
tomcat:tomcat_bak
sessionid:35F785B9C2989BE66EFABCCB973ECEED
4.总结
以上就是我们想要介绍 nginx
的全部内容了,最主要的内容就是其中的一些基本概念,同时需要注意 nginx
作为 http
服务器的相关配置,以及作为反向代理服务器的使用,如何实现负载均衡,最后便是多台 Tomcat
集群实现 session
共享的操作,学习的过程中能够自己操作实现一遍真的还是很有收获,多学一点便收获一份踏实,继续积累吧!