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

2023-11-04

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端口显示的内容

至此就实现了反向代理。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nginx学习研究-Docker安装Nginx 实现反向代理 的相关文章

随机推荐

  • 数据库系统概论——第十章 数据库恢复技术

    一 事务的基本概念 1 事务 Transaction 1 概念 是用户定义的一个数据库操作序列 这些操作要么全做 要么全不做 是一个不可分割的工作单位 2 事务和程序是 事务和程序是两个概念 在关系数据库中 一个事务可以是一条SQL语句 一
  • wpf datagrid 表头居中

  • 程序员常用的工具网站

    程序员常用的工具网站 免费书籍 数据库 在线制作流程图 java开发常用工具网站 程序开发导航 面试常看的网站 在线编程 系统设计 springboot学习参考网站 云服务器 LINUX命令学习 免费书籍 免费编程书籍 数据库 在线学习or
  • Python全栈自动化测试--Pycharm专业版安装

    一 下载Pycharm专业版 1 进入官网下载专业版 Download PyCharm Python IDE for Professional Developers by JetBrains 2 选择windows Professional
  • docker-compose实战

    搭建wordpress容器 先用mysql5 6镜像启动一个名字为mysql wordpress的容器 接着基于这个容器我们启动一个wordpress容器 docker run d name mysql wordpress v home z
  • 几个简单的基本的sql语句

    1 选择 select from table1 where 范围 2 插入 insert into table1 field1 field2 values value1 value2 3 删除 delete from table1 wher
  • 项目管理利器—maven(二)

    一 maven的生命周期和插件 完整的项目构件过程包括 清理 编译 测试 打包 集成测试 验证 部署 maven生命周期包括 clean 清理项目 pre clean 执行清理前的工作 clean 清理上一次构建生成的所有文件 post c
  • 【JDBC】使用DBUtils包来管理JDBC

    什么是DBUtils 是JDBC的简化开发工具包 使用它就不用再写很多冗余的代码了 总而言之 就是使得JDBC的操作更加的简单化了 文章目录 为啥要用DBUtils QueryRunner类 使用的数据库 注册驱动并建立起连接 update
  • ping 不通百度问题的解决

    ping 不通百度问题的解决 问题 网络能够ping通百度的ip地址 115 239 210 27这个ip地址 但是ping www baidu com长时间等待无反应 解决方式 碰到这个问题两次了 每次都挺无奈的 第一次解决是通过回退快照
  • 记录:ubuntu18下使用karlibr标定zed双目相机

    一 karlibr的安装 1 安装依赖 sudo apt get install python setuptools python rosinstall ipython libeigen3 dev libboost all dev doxy
  • Python3 面向对象(22)

    Python3 面向对象 Python从设计之初就已经是一门面向对象的语言 正因为如此 在Python中创建一个类和对象是很容易的 本章节我们将详细介绍Python的面向对象编程 如果你以前没有接触过面向对象的编程语言 那你可能需要先了解一
  • JAVA 相关书籍推荐(全)

    一 软件质量 1 代码整洁之道 the clean coder 2 重构 3 clean coder 代码整洁之道 4 编写可读代码的艺术 5 Effective Java 6 架构整洁之道 7 阿里巴巴 Java 开发手册 8 effec
  • 【扩散模型】3、Stable Diffusion 原型

    文章目录 一 背景 二 方法 2 1 感知图像压缩 2 2 潜在扩散模型 2 3 条件机制 三 实验 论文 High Resolution Image Synthesis with Latent Diffusion Models 代码 ht
  • i5 11300h和R5 5600H 参数对比哪个好

    酷睿i5 11300H配置为4个内核及8个线程 具备8MB的L3缓存和5MB的L2缓存 基础频率3 10GHz最高睿频4 40GHz Intel的显卡将集成Xe GPU内核 至于TDP i5 11300H TDP为35W 最高可配置为45W
  • jupyter的简单配置和使用

    更改jupyter文件目录 在应用当中需要输入anaconda prompt找到该命令窗口 会默认打开C盘 此时需要我们输入D 这里需要注意的是后面的冒号也要输入 还有就是d 和D 都是可以的 输入jupyter notebook就可以打开
  • yml配置,简化代码优化不必要的麻烦

    安全平台url security private url 1 getCustomerUrl 2 addCustomerUrl 3 editCustomerUrl 4 appId 5 appKey 6 appSecret 7 代码引用
  • MYSQL——分组

    1 group by 1 group by的含义 将查询结果按照1个或多个字段进 分组 字段值相同的为 组 2 group by可 于单个字段分组 也可 于多个字段分组 根据gender字段来分组 gender字段的全部值有4个 男 中性
  • 前端制作科技感网页登录界面

    注 如需背景图请联系作者 QQ 3416252112 效果图 源码
  • flutter图片点击跳转_Flutter 你需要知道的那些事 01

    公众号 AndroidTraveler 首发 1 width 属性 对于设置控件宽度填充父控件这件事情 在 Android 里面 只需要设置 MATCH PARENT 即可 但是在 Flutter 里面却不是这样 因为 Flutter 要具
  • Nginx学习研究-Docker安装Nginx 实现反向代理

    Docker安装Nginx 实现反向代理 为了安全考虑 我们一般会设置反向代理 用来屏蔽应用程序真实的IP和端口号 在Linux系统上最常用的反向代理就是Nginx 一 Nginx 安装部署 1 下载 nginx 镜像 docker pul