今天我们来做一个nginx的实战之根据用户客户端发起访问的url中,根据关键字不同,nginx将请求转发到不同的tomcat服务器上去,比如,一个请求的url中如果包含iosoft8004,就转发到端口8004的tomcat服务器中,如果包含iosoft8005的话,就转发到端口8005的tomcat服务器中。
看过我之前文章的话,小伙伴们已经准备好一个端口号是9001的nginx服务器,和端口号8004和8005的tomcat服务器,并且, 在端口是8004的tomcat的webapps文件下创建iosoft8004的应用,在端口是8005的tomcat的webapps文件下创建iosoft8005的应用,这里我就不做具体演示了,在我下边连接的文章中有具体操作。
接下来,我们用一个docker的命令来确认下,nginx和两个tomcat是否正常启动。
# docker ps -a
出现下边的信息的话,说明环境已经准备就绪,没有安装环境的小伙伴,参照我之前的写的文章,自行把环境安装上。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bcbe5d0b053a nginx "nginx -g 'daemon of…" 3 hours ago Up 3 hours 80/tcp, 0.0.0.0:9001->9001/tcp mynginx
d5d9493cda13 tomcat "catalina.sh run" 10 seconds ago Up 8 seconds 0.0.0.0:8005->8080/tcp mytomcat8005
55bbf8aeaeea tomcat "catalina.sh run" 16 seconds ago Up 14 seconds 0.0.0.0:8004->8080/tcp mytomcat8004
大家都知道,我们对nginx设定的话,都是在修改nginx.conf文件,由于我们使用的是docker安装的nginx,需要把nginx的配置文件复制到本地,修改后,在复制回docker的nginx中,这里我们就在/usr/local/nginx文件下,做复制的工作,首先进入到文件夹下。
# cd /usr/local/nginx
复制出docker容器中nginx的配置文件
# docker cp mynginx:/etc/nginx/nginx.conf nginx.conf
编辑nginx.conf文件
# vi nginx.conf
这里是重点,追加下边粗体部分后,保存并推出
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;
server {
listen 9001;
server_name 192.168.100.101;
location ~ /iosoft8004 {
proxy_pass http://192.168.100.101:8004;
}location ~ /iosoft8005 {
proxy_pass http://192.168.100.101:8005;
}
}include /etc/nginx/conf.d/*.conf;
}
将修改完的nginx.conf配置文件拷贝回docker容器中的nginx配置文件夹中
# docker cp nginx.conf mynginx:/etc/nginx/nginx.conf
重启nginx服务
# docker restart mynginx
做到这里,大功告成,分别使用浏览器输入http://192.168.100.101:9001/iosoft8004和http://192.168.100.101:9001/iosoft8005会跳转到我们定义的端口8004和端口8005的tomcat自定义页面中,怎么样,大家都跑通了吗?