目录
一、概述
Nginx反向代理是客户端访问Nginx反向代理服务器后,被其按照一定的路由匹配规则,将客户端请求转发至一个或者多个后端应用服务器,获取后端应用服务器的响应资源后再返回给客户端的代理模式。Nginx反向代理服务器本身不产生响应数据,而是作为中间商对客户端的请求进行转发并返回后端应用服务器的响应。客户端只知道Nginx反向代理服务器的IP,而不知道后端应用服务器的IP,从而对客户端隐藏了后端应用服务器的信息。
Nginx的HTTP协议代理功能是通过ngx_http_proxy_module模块实现的,该模块会被默认编译,无须特殊配置编译参数。
二、环境规划
- 服务器规划
主机名称 IP地址 角色 应用程序 端口 Nginx01 192.168.110.161 反向代理服务器 Nginx 80 Tomcat01 192.168.110.166 后端应用服务器 Tomcat 8081 Tomcat02 192.168.110.167 后端应用服务器 Tomcat 8081
- 系统版本
CentOS Linux release 7.7.1908 (Core)
- 关闭防火墙
此处为方便演示,直接关闭防火墙。生产环境可以根据实际需求开通服务器防火墙策略。
systemctl stop firewalld
systemctl stop iptables
三、Nginx服务、Tomcat服务安装部署
(一)、Nginx服务安装部署
根据文章《一文读懂Nginx应用之 CentOS安装部署Nginx服务》,在反向代理服务器(192.168.110.161)上安装Nginx服务,安装过程此处不再赘述。
(二)、Tomcat服务安装部署
根据文章《一文读懂Tomcat应用之 CentOS安装部署Tomcat服务》,分别在后端应用服务器Tomcat01(192.168.110.166)、Tomcat02(192.168.110.167)上安装Tomcat服务,安装路径为/usr/local/apache-tomcat-8081,并配置服务端口为8081。安装过程此处不再赘述。
1、Tomcat01应用服务器部署应用程序
新建index.jsp文件,用于模拟应用程序。
- 新建index.jsp文件
[root@Tomcat01 ~]# mkdir -pv /usr/local/apache-tomcat-8081/webapps/ROOT/tomcat01_8081/
[root@Tomcat01 ~]# cat > /usr/local/apache-tomcat-8081/webapps/ROOT/tomcat01_8081/index.jsp << EOF
This is Tomcat01 Web Server !(192.168.110.166)
I am API_8081 !
EOF
- 重启Tomcat服务
[root@Tomcat01 ~]# /usr/local/apache-tomcat-8081/bin/shutdown.sh
[root@Tomcat01 ~]# /usr/local/apache-tomcat-8081/bin/startup.sh
- 访问index.jsp页面
使用浏览器访问地址:http://192.168.110.166:8081/tomcat01_8081/
由上可见,访问成功。
2、Tomcat02应用服务器部署应用程序
新建index.jsp文件,用于模拟应用程序。
- 新建index.jsp文件
[root@Tomcat02 ~]# mkdir -pv /usr/local/apache-tomcat-8081/webapps/ROOT/tomcat02_8081/
[root@Tomcat02 ~]# cat > /usr/local/apache-tomcat-8081/webapps/ROOT/tomcat02_8081/index.jsp << EOF
This is Tomcat02 Web Server !(192.168.110.167)
I am API_8081 !
EOF
- 重启Tomcat服务
[root@Tomcat02 ~]# /usr/local/apache-tomcat-8081/bin/shutdown.sh
[root@Tomcat02 ~]# /usr/local/apache-tomcat-8081/bin/startup.sh
- 访问index.jsp页面
使用浏览器访问地址:http://192.168.110.167:8081/tomcat02_8081/
由上可见,访问成功。
(三)、Tomcat服务验证
验证从Nginx反向代理服务器(192.168.110.161)上,是否能够直接访问Tomcat01(192.168.110.166)、Tomcat02(192.168.110.167)的Tomcat应用服务。
- 访问Tomcat01(192.168.110.166)
[root@Nginx01 ~]# curl http://192.168.110.166:8081/tomcat01_8081/
- 访问Tomcat02(192.168.110.167)
[root@Nginx01 ~]# curl http://192.168.110.167:8081/tomcat02_8081/
以上说明从Nginx反向代理服务器(192.168.110.161)可以正常访问Tomcat01(192.168.110.166)与Tomcat02(192.168.110.167)的Tomcat应用服务,代理服务器与后端应用服务器之间网络、服务等均状态正常。
四、HTTP反向代理配置
本例使用Nginx反向代理服务器(192.168.110.161),代理后端应用服务器Tomcat01(192.168.110.166)的Tomcat服务(8081端口)。
(一)、反向代理配置
在Nginx反向代理服务器(192.168.110.161)中修改Nginx服务配置文件/usr/local/nginx/conf/nginx.conf,加入反向代理配置。本例中最核心的配置是location模块中的代理指令proxy_pass。
[root@Nginx01 ~]# vim /usr/local/nginx/conf/nginx.conf
配置内容如下:
#
# Nginx Configuration
#
worker_processes 1;pid /usr/local/nginx/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
&