Docker-Nginx反向代理tomcat

下载Tomcat镜像

因为本地仓库没有的情况下,docker会自动到远程仓库去拉取。

docker run -p 8080:8080 --name cocky_lewin tomcat

这时候访问浏览器可以得到tomcat的启动页面,注意改成自己的IP:8080
Docker-Nginx反向代理tomcat_第1张图片
在主机的工作环境下建立一个用来存放nginx.conf的配置文件

/root/nginx/nginx.conf

并使用vim编辑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;

    #include /etc/nginx/conf.d/*.conf;

    upstream tomcat_client {
         server t01:8080;
    } 

    server {
        server_name "";
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        location / {
            proxy_pass http://tomcat_client;
            proxy_redirect default;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
}

下载Nginx镜像

这个步骤比较简单.直接使用docker run命令,docker在本地找不到镜像的时候会去远程仓库拉取。

docker run --name=ngx001 --link=cocky_lewin:t01 -p 80:80 -idt nginx

这里容器的命名为ngx001,并且通过link指令连接两个容器,这时候在ngx001的host里面可以看到我们刚才启动的tomcat的映射。

将配置文件拷贝到容器内

docker cp /root/nginx/nginx.conf nginx-test:/etc/nginx/

进入运行的镜像

使用docker exec 进入刚才运行的容器的交互环境

docker exec -it ngx001 bash

再执行命令重新装在配置文件

nginx -s reload 

这时候访问IP:80端口会被nginx代理到tomcat的IP:8080端口下。这次又一次看到了我们熟悉的tomcat页面。

更加深入

在此基础上,参考下面这条链接,可以实现负载均衡。

https://www.cnblogs.com/areyouready/p/8973268.html

祝好!

你可能感兴趣的:(Docker)