docker+tomcat+nginx 实现反向代理多个tomcat
一丶nginx反向代理多个tomcat服务器
1.什么是正向代理?
代理对象是客户端,服务端不用知道是哪个客户端访问的。
2.什么是反向代理?
代理对象是服务端,客户端不知道是哪个服务端接受的访问(访问同一个网址,实际访问的可能是不同的ip地址或者端口)
3.如何搭建一个简单的反向代理多个服务器的nginx?
VM虚拟机(CentOS 7)上搭建简单的 docker+tomcat+nginx
使用docker容器创建多个tomcat,tomcat作为服务器,nginx作为反向代理服务器。
创建多个tomcat 服务器
docker run --name tomcat01 -d -p 8088:8080 tomcat //映射不同端口 开启多个tomcat
docker run --name tomcat02 -d -p 8089:8080 tomcat
创建nginx服务器
docker run --name myNginx -d -p 80:80 nginx
查看nginx容器id
docker ps -a
进入容器
docker exec -it 容器id /bin/bash
修改nginx配置文件 nginx.conf
容器中nginx.conf文件目录 /etc/nginx/nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/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 /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
upstream tomcats{ //此处名字要与下面的 proxy_pass处名字对应
server 192.168.31.99:8088 weight=2; //代理刚刚我们创建好的tomcat服务器,weight代表权重, 192.168.31.99是本虚拟机ip地址
server 192.168.31.99:8089 weight=1; // 默认为1,
#ip_hash; //设置对同一个ip地址的请求,返回同一个服务器代理对象,防止session丢失问题 #号代表注释内容 未开启
#hash $request_uri; //设置对同一个url地址的请求,返回同一个服务器代理对象,多用于带缓存的 //服务器url地址
}
server {
listen 80;
server_name test.shop.com; //设置的域名,可在本机将host文件对应修改进行访问,例如添加:192.168.31.99 test.shop.com
location / {
proxy_pass http://tomcats;
index index.html index.htm;
}
}
#include /etc/nginx/conf.d/*.conf;
}
进入nginx容器操作的一些命令
修改完成进入容器中sbin目录 输入 ./nginx -s reload 重新加载配置文件启动命令
进入容器使用vim命令修改配置文件 需要安装vim命令,顺序如下:
apt-get install vim
apt-get update
apt-get install vim
复制/粘贴快捷键 shift+ctrl+C / shift+ctrl+V
最后在主机上访问:test.shop.com 查看结果
如果查看结果不明显,可以进入tomcat容器中修改ROOT目录下index.jsp首页的代码来区分tomcat端口