Docker容器下运行Nginx并实现反向代理

 更新时间:2022年03月26日 09:27:33   作者:.NET开发菜鸟  
这篇文章介绍了Docker容器下运行Nginx并实现反向代理的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、前言

我们知道,为了安全考虑,我们一般会设置反向代理,用来屏蔽应用程序真实的IP和端口号。在Linux系统上最常用的反向代理就是Nginx。本篇文章中,我们会通过Docker容器分别运行一个Nginx容器和一个ASP.NET Core应用程序的容器,然后设置反向代理。

二、运行Nginx容器

1、获取Nginx镜像

要运行容器,首先需要有相应的镜像,使用下面的命令拉取NGINX镜像:

docker pull nginx

如图所示

2、运行Nginx容器

获取Nginx镜像之后,我们就可以根据镜像来运行容器

docker run --name=nginx -d -p 4030:80 nginx

上面命令的解释如下:

  • --name:设置容器的名称。
  • -d:表示在后台运行容器。
  • -p:指定端口映射。4030是宿主机的端口,80是Nginx容器内部的端口。
  • nginx:表示根据nginx镜像运行容器。

如图所示

然后在浏览器里面访问:

出现上面的截图,就说明Nginx容器运行成功。

三、运行ASP.NET Core应用程序

1、构建ASP.NET Core应用程序镜像

我们在宿主机上面创建一个demo目录,然后在创建一个ReverseProxy目录,把发布后的项目上传到ReverseProxy目录下面

上传项目后的目录结构

然后我们使用下面的命令创建镜像

docker build -t reverseproxy .

上面命令的解释:

  • -t:表示给镜像起一个名字。

上面命令最后英文状态的"."不能省略,表示在当前目录中查找Dockerfile文件。

执行过程如下图所示

执行完成以后,我们就可以看到刚才创建的镜像了

2、运行应用容器

创建完镜像以后运行容器

docker run --name=reverseproxy -d -p 9020:80 reverseproxy

这里使用宿主机的9020端口映射到容器内的80端口。 

如图所示

从上图中我们可以看到容器已经在运行了,我们在浏览器里面访问,验证容器是否运行成功

出现上图所示的结果,表明容器运行成功。

三、设置反向代理

在上面的步骤中,我们分别运行了nginx容器和ASP.NET Core应用程序的容器,并且都可以在浏览器里面访问,下面我们来设置反向代理。

反向代理实现如下的效果:在浏览器里面访问4030端口的时候跳转到9020端口,浏览器显示ASP.NET Core应用程序。

配置反向代理,我们需要修改Nginx的配置文件。在Nginx的配置文件里面设置反向代理的HTTP地址。

要修改Nginx的配置文件,首先需要进入Nginx容器里面,使用下面的命令进入容器里面

docker exec -it nginx /bin/bash

上面命令的解释说明:

  • -it:表示分配一个伪终端。
  • nginx:表示容器的名称,这里也可以使用容器ID。
  • /bin/bash:表示对容器执行bash操作。

执行过程如图所示

上面的截图中,我们使用ls查看,发现里面其实就是一个Linux操作系统。

Nginx默认会安装在etc目录下面

然后进入nginx目录

我们看到了nginx.conf配置文件,需要在这个配置文件里面设置反向代理。我们使用vim命令编辑nginx.conf文件:

我们看最后红框里面的内容,表示使用的是conf.d目录下面的conf文件进行配置。我们进入conf.d目录下面,然后编辑default.conf文件。

要配置反向代理,我们首先需要知道要代理的程序的IP地址,所以在修改配置之前,我们首先需要获取reverseproxy容器的IP地址。

docker inspect 容器名称

如图所示

我们会看到很多信息,这里只需要关注最后的网络配置信息即可

获取到了容器的IP地址以后,我们就可以配置反向代理了。default.conf文件

因为容器是内部访问,所以设置的端口是80,而不是运行容器时设置的9020端口。修改完成之后保存退出。

我们可以使用下面的命令检查一下修改后的配置文件是否有错:

nginx -t

如图所示

如果修改的配置文件没有错误,则退出容器。如果修改的配置文件有错误,要改正错误,然后退出容器。

由于我们修改了配置,所以需要重新运行容器,以便配置生效。

然后我们在浏览器里面访问4030端口

可以看到页面被代理到了9020端口显示的内容。这样就实现了反向代理。

到此这篇关于Docker容器下运行Nginx并实现反向代理的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • docker容器调用yum报错的解决办法

    docker容器调用yum报错的解决办法

    在本篇文章里小编给大家分享的是关于docker容器调用yum报错的解决办法,有兴趣的朋友们可以参考下。
    2020-03-03
  • Docker nginx安装与配置挂载的方法

    Docker nginx安装与配置挂载的方法

    这篇文章主要介绍了Docker nginx安装与配置挂载的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • 在Docker中的ubuntu中安装Python3和Pip的问题

    在Docker中的ubuntu中安装Python3和Pip的问题

    这篇文章主要介绍了在Docker中的ubuntu中安装Python3和Pip的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • 使用Nexus创建Docker仓库的方法步骤

    使用Nexus创建Docker仓库的方法步骤

    这篇文章主要介绍了使用Nexus创建Docker仓库的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 使用docker在linux环境中部署springboot包的教程

    使用docker在linux环境中部署springboot包的教程

    这篇文章主要介绍了使用docker在linux环境中部署springboot包,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • ubuntu如何查看docker容器占用的磁盘空间

    ubuntu如何查看docker容器占用的磁盘空间

    这篇文章主要介绍了ubuntu如何查看docker容器占用的磁盘空间问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • 详解用Docker快速搭建一个博客网站

    详解用Docker快速搭建一个博客网站

    本文主要介绍了用Docker快速搭建一个博客网站,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • 使用docker-compose,如何调整JVM参数

    使用docker-compose,如何调整JVM参数

    这篇文章主要介绍了使用docker-compose,如何调整JVM参数问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • docker引起服务器磁盘爆满的问题解决

    docker引起服务器磁盘爆满的问题解决

    本文主要介绍了docker引起服务器磁盘爆满的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Docker安装Kong API Gateway并使用的详细教程

    Docker安装Kong API Gateway并使用的详细教程

    这篇文章主要介绍了Docker安装Kong API Gateway并使用,本文通过图文实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08

最新评论