1. nginx反向代理测试环境
一台nginx反向代理服务器,两台tomcat服务器
配置两个分别基于www.test1.com和www.test2.com的虚拟主机
nginx反向代理服务器ip地址为:192.168.1.196
第一台tomcat服务器ip地址为:192.168.1.195
第二台tomcat服务器ip地址为:192.168.1.194
nginx+tomcat的测试环境部署预览图:
我们要做的就是通过搭建nginx和tomcat测试环境,client1访问www.test1.com时,nginx反向代理会把请求转发到tomcat1,然后由tomcat1向client1提供服务。
client2访问www.test2.com时,nginx反向代理会把请求转发到tomcat2,然后由tomcat2向client2提供服务。
达到跟上面的图一样的效果。
2. 配置tomcat服务器
下载tomcat安装包:https://tomcat.apache.org/download-80.cgi#8.0.50
这里tomcat版本使用apache-tomcat-8.0.50.tar.gz版本进行测试,你也可以选择其他版本安装,然后分别在两台tomcat服务器上解压并安装。
tar -zxvf apache-tomcat-8.0.50.tar.gz
ls
进入bin目录下,执行startup.sh启动tomcat:
cd bin
ls
./startup.sh
通过ps -aux |grep tomcat命令查看tomcat进程状态:
3. 修改tomcat服务器内容
分别修改两台tomcat服务器的index.jsp页面的信息,使tomcat1和tomcat2两个服务首页显示不同的ip地址内容。
通过进入tomcat目录下:
修改webapps/ROOT目录下index.jsp的内容:
修改完tomcat1服务器后,打开浏览器访问192.168.1.194::8080,查看修改tomcat1的效果:
tomcat2下的index.jsp修改跟tomcat1的修改过程是类似的。
tomcat服务器都配置完毕,接下来配置nginx反向代理。
4. 配置nginx反向代理
根据测试环境的要求,在nginx.conf文件中配置两个tomcat服务器,配置两个虚拟主机(www.test1.com和www.test2.com)。
4.1 Tomcat服务器配置信息
配置一个代理,即tomcat1服务器
#tomcat_server:要转发的服务器名字,这里转发到tomcat_server1
#server ip:port :要转发到的服务器ip地址和端口号
upstream tomcat_server1 {
server 192.168.1.194:8080;
}
配置一个代理,即tomcat2服务器:
upstream tomcat_server2 {
server 192.168.1.195:8080;
}
4.2虚拟主机配置信息
基于www.test1.com域名的虚拟主机的主要配置:
server {
listen 80;
server_name www.test1.com;
location / {
#域名www.test1.com的请求全部转发到tomcat_server1,即tomcat1服务上
proxy_pass http://tomcat_server1;
#欢迎页面,按照从左到右的顺序查找页面,先找index.jsp
index index.jsp index.html index.htm;
}
}
基于www.test2.com域名的虚拟主机的主要配置:
server {
listen 80;
server_name www.test2.com;
location / {
proxy_pass http://tomcat_server2;
index index.jsp index.html index.htm;
}
}
把以上这些配置信息加入到nginx反向代理服务器的配置文件nginx.conf中,具体信息如下:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
#tomcat_server1
upstream tomcat_server1 {
server 192.168.1.194:8080;
}
#tomcat_server2
upstream tomcat_server2 {
server 192.168.1.195:8080;
}
#virtual www.test1.com
server {
listen 80;
server_name www.test1.com;
location / {
#域名www.test1.com的请求全部转发到tomcat_server1,即tomcat1服务上
proxy_pass http://tomcat_server1;
#欢迎页面,按照从左到右的顺序查找页面,先找index.jsp
index index.jsp index.html index.htm;
}
}
#virtual www.test2.com
server {
listen 80;
server_name www.test2.com;
location / {
proxy_pass http://tomcat_server2;
index index.jsp index.html index.htm;
}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
如果不熟悉这些配置参考:5-nginx配置一和6-nginx配置二
然后保存nginx.conf文件,通过./nginx -t测试配置是否正确
然后通过./nginx -s reload重启nginx。
5. 测试
请求访问www.test1.com通过nginx反向代理访问tomcat1,请求访问www.test2.com通过nginx反向代理访问tomcat2。并分析请求的转发过程是否和预想的一样。
打开浏览器访问www.test1.com,然后通过nginx反向代理,把请求转发到tomcat1服务器了。
对于www.test2.com请求,同理。