1.1 Nginx代理简介
代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送给客户机。
为什么要使用代理服务器?
提高访问速度
由于目标主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再访问相同的站点数据时,会直接从代理服务器的硬盘中读取,起到了缓存的作用,尤其对于热门站点能明显提高请求速度。
防火墙作用
由于所有的客户机请求都必须通过代理服务器访问远程站点,因此可在代理服务器上设限,过滤某些不安全信息。
通过代理服务器访问不能访问的目标站点
互联网上有许多开放的代理服务器,客户机在访问受限时,可通过不受限的代理服务器访问目标站点,通俗说,我们使用的翻墙浏览器就是利用了代理服务器,虽然不能出国,但也可直接访问外网。
什么是正向代理?
正向代理,架设在客户机与目标主机之间,只用于代理内部网络对 Internet 的连接请求,客户机必须指定代理服务器,并将本来要直接发送到 Web 服务器上的 Http 请求发送到代理服务器中。
什么是反向代理?
反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给 Internet 上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。
1.2使用Nginx反向代理Tomcat
案例准备
Nginx | ip:192.168.10.30 |
---|---|
Tomcat1 | ip:192.168.10.10 |
Tomcat2 | ip:192.168.10.20 |
1.首先保证三台机器能够互相通信
2.分别为两台tomcat节点准备不同的网页内容
3.修改nginx主配置文件信息
2.1部署Tomcat节点
1.官网获取tomcat的tar包 tomcat官网下载地址 tomcat官网
tar zxvf apache-tomcat-8.5.30.tar.gz
2.为了方便管理tomcat服务程序 我们将解压过后的目录移动到 /usr/local/tomcat
mv apache-tomcat.8.5.30 /usr/local/tomcat
3.启动tomcat并访问127.0.0.1如果能够看到下方这个网页表示tomcat启动运行成功
/usr/local/tomcat/bin/startup.sh
4.为tomcat准备网页内容 这里两台tomcat服务器前端网页我分别写为test1和test2方便测试
第一台tomcat
mkdir -p /web/web1
vim /web/web1/index.jsp
test1
第二台tomcat
mkdir -p /web/web1
vim /web/web1/index.jsp
test2
5.修改tomcat配置文件
vim /usr/local/tomcat/conf/server.xml
在149-151行左右加入:
<Context docBase="/web/web1" path="" reloadable="false">
</Context>
Context段:tomcat虚拟主机的字段
docBase :web应用的文档基准目录
path:设置默认的“类”
reloadable:设置监视“类”是否变化
6.重启tomcat服务
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
7.访问测试页面
firefox 127.0.0.1:8080
如果能够看到测试的网页内容 即表示成功
注意:1.tomcat依赖于java环境在部署tomcat之前一定要用java-version看一下当前系统是否有java环境,如果没有请自行进行安装
2.两台tomcat节点都使用相同的配置方法,唯一的不同就是前端文件的内容 一个为test1另一个为test2
3.tomcat默认访问的端口号为 8080
2.2部署Nginx服务器
1.官网获取nginx源码包官网下载地址
2.创建nginx账户,并用yum下载相应的开发工具
useradd -M -s /sbin/nologin nginx
yum install pcre-devel zlib-devel openssl-devel -y
3.解压nginx并进行编译安装
tar zxvf nginx包名
cd /nginx解压出来的目录名
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make& make install
prefix:指定释放的目录位置
user:指定运行的账户
group:指定运行的账户组
with-http_stub_status_module:启用nginx访问统计功能
4.配置nginx
vi /usr/local/nginx/conf/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type
application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream tomcat_server {
server 172.16.16.172:8080 weight=1;
server 172.16.16.173:8080 weight=1;
}
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
proxy_pass http://tomcat_server;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
6.重启nginx使用配置文件生效
systemctl restart nginx.service
2.3测试
使用firefox访问nginx服务器的ip不停刷新页面查看不同的结果或者使用脚本测试
脚本测试:for i in $(seq 20); do curl http://192.168.10.30*nginx服务器IP*; done
下面是我的测试结果
我们可以看到访问了20次nginx服务器 而这20次了分别出现了不同的tomcat节点所写的网页文件,这样就能使用nginx反向代理功能实现tomcat的负载均衡
注意:1.nginx并不需要做任何的网页文件,只是作为一个负载调度器的功能
2.为了方便测试 两台tomcat节点写了不同的网站内容,在实际开发环境中,以生产为标准
使用nginx反向代理的好处
1.支持更多的并发量,实现web站点负载均衡
2.防止web站点的单节点故障,有力的增强了web的高可用性
3.对外网隐藏自己真实的web服务器ip,访问到的仅仅是作为负载调度器出现的nginx的ip,而并非是web节点的ip,很好的提供了web服务器的安全性
等等