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后容器会退出。

posted on 2022-10-29 19:32  王景迁  阅读(467)  评论(0编辑  收藏  举报

导航