使用Docker实现Nginx反向代理

2023-12-07 0 576
目录
  • 1.首先安装好Dokcer,这里不再赘述
  • 2.Docker安装Nginx容器
    • 2.1首先需要创建Nginx配置文件,之后完成挂载
    • 2.2重新启动nginx容器
    • 2.3浏览器输入http:ip:9002访问,发现是nginx首页,安装成功
  • 3.安装Tomcat镜像
    • 4.配置Nginx文件
      • 5.拓展

        本机是在CentOS7上面进行操作的

        1.首先安装好Dokcer,这里不再赘述

        2.Docker安装Nginx容器

        2.1首先需要创建Nginx配置文件,之后完成挂载

        启动前需要先创建Nginx外部挂载的配置文件( /home/nginx/conf/nginx.conf)之所以要先创建 , 是因为Nginx本身容器只存在/etc/nginx 目录 , 本身就不创建 nginx.conf 文件当服务器和容器都不存在 nginx.conf 文件时, 执行启动命令的时候 docker会将nginx.conf 作为目录创建 , 这并不是我们想要的结果 。

        # 创建挂载目录
        mkdir -p /home/nginx/conf
        mkdir -p /home/nginx/log
        mkdir -p /home/nginx/html
        # 生成容器
        docker run –name nginx -p 9001:80 -d nginx

        然后将nginx中的配置文件复制到外部环境

        # 将容器nginx.conf文件复制到宿主机
        docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
        # 将容器conf.d文件夹下内容复制到宿主机
        docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
        # 将容器中的html文件夹复制到宿主机
        docker cp nginx:/usr/share/nginx/html /home/nginx/
        # 删除正在运行的nginx容器
        docker rm -f nginx

        2.2重新启动nginx容器

        docker run -p 9002:80 –name nginx -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/conf/conf.d:/etc/nginx/conf.d -v /home/nginx/log:/var/log/nginx -v /home/nginx/html:/usr/share/nginx/html -d nginx:latest

        命令介绍:

        • –name nginx 启动容器的名字
        • -d 后台运行
        • -p 9002:80 将容器的 9002(后面那个) 端口映射到主机的 80(前面那个) 端口
        • -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf 挂载nginx.conf配置文件
        • -v /home/nginx/conf/conf.d:/etc/nginx/conf.d 挂载nginx配置文件
        • -v /home/nginx/log:/var/log/nginx 挂载nginx日志文件
        • -v /home/nginx/html:/usr/share/nginx/html 挂载nginx内容
        • nginx:latest 本地运行的版本
        • \\ shell 命令换行

        2.3浏览器输入http:ip:9002访问,发现是nginx首页,安装成功

        3.安装Tomcat镜像

        下载tomcat8

        docker run -d -p 8080:8080 –name mytomcat8 billygoo/tomcat8-jdk8

        然后进行访问,如果访问不到,原因是

        新版tomcat的/bin/bash目录下有webapps和webapps.dist两个目录webapps里面没有任何东西 total为0,实际有东西的是webapps.dist目录下rm -rf webapps #删除webapps文件夹mv webapps.dist webapps #改名为webapps

        重启tomcat进行访问,发现可以访问到了

        4.配置Nginx文件

        效果:访问http://ip:9002/可以看到tomcat的首页

        原效果:访问http://ip:9002/看到的是nginx的首页

        cd /home/nginx/conf

        使用Docker实现Nginx反向代理

        在http下面添加如下代码:

        server{
               #监听的端口 本例中9002监听nginx80端口,所以这里写80
               listen 80;
               #字符格式
               charset utf-8;
               #当前的服务器ip
               server_name ip;
               location / {
                  #要代理去哪个服务器的ip以及端口
                  proxy_pass http://ip:8080;
                  #被代理服务器返回默认的响应头中的location头域以及refresh头域数值
                  proxy_redirect default;
               }
        }

        重启nginx

        docker restart nginx

        访问http://ip:9002/可以看到tomcat的首页

        5.拓展

        要达到的效果:

        1.再创建两个tomcat容器,和上面一样进行配置,一个为8081端口,一个为8082端口

        2.在这两个tomcat里创建不同的目录,里面放一个html文件

        3.配置nginx

        4.访问http://ip/edu/a.html访问到的是8081的html

        5.访问http://ip/vod/a.html访问到的是8082的html

        #创建好两个tomcat容器后,进入容器
        docker exec -it 容器ID /bin/bash
        cd webapps
        mkdir edu #8081端口的容器创建这个,8082的创建名为vod的目录
        vim a.html
        #如果没有vim则安装一个,其他方法也行,搞个html进去就行
        apt-get update
        apt-get install vim

        a.html 里简单写个<h1>端口号</h1>就行,只是看效果

        重启这几个tomcat容器,访问发现成功

        最后配置nginx配置文件

        http下面添加:

        server{
        #监听的端口
        listen 9001;
        #字符格式
        charset utf-8;
        #当前的服务器ip
        server_name ip;
        location ~ /edu/ {
        #要代理去哪个服务器的ip以及端口
        proxy_pass http://ip:8081;
        #被代理服务器返回默认的响应头中的location头域以及refresh头域数值
        proxy_redirect default;
        }
        location ~ /vod/ {
        #要代理去哪个服务器的ip以及端口
        proxy_pass http://ip:8082;
        #被代理服务器返回默认的响应头中的location头域以及refresh头域数值
        proxy_redirect default;
        }
        }

        重启nginx,访问,发现成功。

        使用Docker实现Nginx反向代理

        ps 这个8001是我写错了,看效果就行

        使用Docker实现Nginx反向代理

        到此这篇关于使用Docker实现Nginx反向代理的文章就介绍到这了,更多相关Docker Nginx反向代理内容请搜索悠久资源以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源!

        收藏 (0) 打赏

        感谢您的支持,我会继续努力的!

        打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
        点赞 (0)

        悠久资源 Nginx服务器 使用Docker实现Nginx反向代理 https://www.u-9.cn/server/nginx/114357.html

        常见问题

        相关文章

        发表评论
        暂无评论
        官方客服团队

        为您解决烦忧 - 24小时在线 专业服务