Nginx学习研究-Docker安装Nginx 实现反向代理

简介: Nginx学习研究-Docker安装Nginx 实现反向代理

Docker安装Nginx 实现反向代理

为了安全考虑,我们一般会设置反向代理,用来屏蔽应用程序真实的IP和端口号。在Linux系统上最常用的反向代理就是Nginx。

一、 Nginx 安装部署

1、下载 nginx 镜像

docker pull nginx

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z75d58tg-1627219716343)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210725102119333.png)]

2、查看 docker 是否成功安装了 nginx

docker images

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dMayukDu-1627219716345)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210725104406812.png)]

在上图中可以看到我们已经安装了最新版本(latest)的 nginx 镜像。

3、创建并启动nginx容器

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

上面命令的解释如下:

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

4、安装成功测试

在浏览器里面访问:

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

二、运行应用程序

1、构建应用程序容器

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

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

docker build -t reverseproxy .

命令的解释:

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

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

2、运行应用容器

创建完镜像以后运行容器

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

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

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

三、设置反向代理

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

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

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

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

docker exec -it nginx /bin/bash

上面命令的解释说明:

  1. -it:表示分配一个伪终端。
  2. nginx:表示容器的名称,这里也可以使用容器ID。
  3. /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

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

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

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

docker stop nginx 
docker start nginx

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

可以看到页面被代理到了9020端口显示的内容。

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

docker stop nginx
docker start nginx

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

可以看到页面被代理到了9020端口显示的内容

至此就实现了反向代理。


相关文章
|
3天前
|
负载均衡 Java 应用服务中间件
nginx安装在linux上
nginx安装在linux上
23 2
|
8天前
|
Linux 虚拟化 Docker
Windows12安装Docker
Windows12安装Docker
41 2
|
20天前
|
负载均衡 应用服务中间件 数据处理
Nginx学习使用
Nginx学习使用
41 0
|
2天前
|
运维 应用服务中间件 nginx
【docker】记录一次nginx启动失败的检测
【docker】记录一次nginx启动失败的检测
11 1
|
2天前
|
负载均衡 前端开发 应用服务中间件
Nginx安装与使用
Nginx安装与使用
14 0
|
3天前
|
运维 Linux 虚拟化
Docker详解(三)——Docker安装与部署
Docker详解(三)——Docker安装与部署
35 4
|
5天前
|
Linux 开发工具 Android开发
Docker系列(1)安装Linux系统编译Android源码
Docker系列(1)安装Linux系统编译Android源码
7 0
|
5天前
|
Ubuntu Linux 数据安全/隐私保护
Linux(7)Ubuntu20.04 arm64安装Docker
Linux(7)Ubuntu20.04 arm64安装Docker
20 0
|
6天前
|
存储 Ubuntu Docker
如何在 Ubuntu 上安装 Docker?
【4月更文挑战第17天】
44 8
如何在 Ubuntu 上安装 Docker?
|
8天前
|
Kubernetes 数据安全/隐私保护 数据中心
Portainer的安装(docker)
Portainer的安装(docker)
18 0