Nginx代理后端Tomcat
拉取镜像并运行
docker pull nginx:1.23
docker pull tomcat:8
docker run -d nginx:1.23
docker run -d tomcat:8
修改Nginx配置
安装vim命令并备份
安装vim命令
apt-get update
apt-get install apt-file
apt-file update
apt-get install vim
备份该容器镜像
docker commit -p 1c23feb4c7b5 nginx1.23_has_vim
其中,1c23feb4c7b5是容器id,nginx1.23_has_vim是镜像名称
把镜像打包成tar.gz包
docker save -o nginx1.23_has_vim.tar.gz nginx1.23_has_vim
修改nginx配置文件
vim /etc/nginx/conf.d/default.conf
增加以下内容
其中,172.17.0.2是tomcat容器IP,8080是tomcat容器端口。
重新加载配置文件
nginx -s reload
验证Nginx转发
进入tomcat容器后修改webapps
cp -r webapps.dist/* webapps/
Nginx配置轮询式负载均衡
使用默认server_name
upstream tomcat {
server 172.17.0.2:8080;
server 172.17.0.3:8080;
}
server {
listen 80;
listen [::]:80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
proxy_pass http://tomcat;
}
...
}
其中,172.17.0.2和172.17.0.3是tomcat容器IP。
docker exec -it 容器id bash
echo "abc" > ./webapps/ROOT/index.jsp
exit
另1个tomcat容器把index.jsp内容改成def。
curl nginx容器IP:80/index.jsp
使用自定义server_name
在节点/etc/hosts中增加内容
172.17.0.4 www.abc.com
client通过域名访问server时,域名与被解析的IP都在请求体中。
HTTP默认端口和Nginx默认监听端口都是80,转发到Nginx后,Nginx按照listen配置的IP->server_name配置的域名这个优先级顺序匹配到server块。
Nginx命令脚本
nginx_pid=/run/nginx.pid
res=0
start() {
if [ -e $nginx_pid ];then
echo "nginx is running...."
res=0
return
fi
nginx
res=$?
}
stop() {
nginx -s quit
res=$?
}
reload() {
nginx -s reload
res=$?
}
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
stop
start
;;
*)
echo $"Usage: $prog {start|stop|restart|reload|help}"
exit 0
esac
echo "exit: $res"
exit $res
其中,执行stop后容器会退出。