nginx docker 反向代理

需要掌握:
正向代理
反向代理

停止并删除容器

cd /root/docker_nginx
docker-compose  down

添加 tomcat

在/root/docker_nginx修改docker-compose.yml文件

cd /root/docker_nginx
vim docker-compose.yml

内容如下:

version: '3'
services:
  nginx:
    image: nginx   # 镜像
    container_name: nginx   # 指定容器名称
    networks: 
      - mynet
    ports:   # bridge网络模式,指定映射端口
       - "8000:80"
    # network_mode: "host"   # 指定网络模式
    restart: always   # 当docker服务启动时,容器总是跟着启动
    volumes:
      - /root/docker_nginx/conf.d:/etc/nginx/conf.d

  tomcat1:
    image: tomcat   # 镜像
    container_name: tomcat1   # 指定容器名称
    networks: 
      - mynet
    #ports:   # bridge网络模式,指定映射端口
    #   - "8000:80"
    # network_mode: "host"   # 指定网络模式
    restart: always   # 当docker服务启动时,容器总是跟着启动

networks:
  mynet:

启动

docker-compose  up -d

为什么不用docker run 启动tomcat

因为通过 docker-compose启动的容器
与
通过下面命令启动的容器

docker run -d --name=tomcat_test tomcat

其2个容器的ip网段可能不同,无法直接访问

如果通过docker run启动容器时,需要 指定ip地址 或者 指定网络

修改tomcat容器中的webapps目录

由于当前版本的tomcat的webapps目录下是空的,需要做处理,见:
https://www.malaoshi.top/show_1EF5k2qNG471.html

测试

由于启动tomcat时没有指定映射端口,所以只能在宿主机中,通过 容器内部ip 访问tomcat

查看该容器ip
docker inspect tomcat_test

在执行结果中找到下面部分:

"IPAddress": "172.23.0.2",
在宿主机通过 curl 访问tomcat
curl http://172.23.0.2:8080/

访问的结果是html代码,如下:

配置反向代理

通过配置反向代理,其他机器 通过 反向代理服务器,访问tomcat服务器

备份default.conf文件

cd /root/docker_nginx/conf.d
cp default.conf default.conf.bak

修改default.conf文件

vim default.conf

内容如下:

server {
    listen       80;   # 监听所有ipv4的80端口
    # listen  [::]:00;    # 监听所有ipv6的80端口
    server_name  localhost;   # 匹配域名。主机绑定多个域名时使用
    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;
    location / {   # 通用匹配路径
        proxy_pass http://tomcat1:8080/;   # 反向代理
    }
}

注意: proxy_pass http://tomcat1:8080/;这里tomcat1是容器名
nginx、tomcat容器使用相同网络mynet,所以可以通过 容器名 访问

重新加载 or 重启

重新加载配置文件

如果不想重启nginx docker,那么需要进入容器,重新加载配置文件

docker exec -it nginx bash
nginx -s  reload

重启nginx docker

重启的方式,比重新加载要简单些

docker-compose restart

测试

访问 http://106.13.165.100:8000/ 显示tomcat首页