Docker配置nginx

article/2025/8/25 17:56:30

1.Docker安装nginx

  • 安装的命令
sudo docker search nginx
docker pull nginx
  • 查看是否安装
docker images

在这里插入图片描述

  • 运行测试nginx
docker run --name nginx-test -p 9091:80 -d nginx
--name  #给你启动的容器起个名字,以后可以使用这个名字启动或者停止容器
-p #映射端口,将docker宿主机的9091端口和容器的80端口进行绑定
-v #挂载文件用的
-d #表示启动的是哪个镜像。

在这里插入图片描述
在这里插入图片描述

2.Nginx服务的配置和部署

  • 为什么需要做文件的映射?

我们在使用容器的过程中需,有时候需要对容器中的文件进行修改管理,如果不做文件映射的化,我们使用docker exec -it 容器ID/容器名 /bin/bash 才能进入nginx中的文件里面如图
在这里插入图片描述
如果把关键文件映射到主机上,那么就可以在主机中进行修改而不必进入文件当中才进行修改了。

  • 需要在主机上建立相应的关键文件目录
  • 在home下创建一个docker文件夹,用来专门存docker容器的映射文件。
  • 在docker下创建一个nginx的文件夹,用于存nginx的映射文件。
  • 在nginx下创建三个关键的映射文件。
    www文件映射www目录,也就是网页目录。
    logs文件映射日志目录。
    conf文件映射配置目录
    在这里插入图片描述
  • 先在容器中拷贝配置文件
docker cp 容器ID:/etc/nginx/nginx.conf /home/docker/nginx/conf
#注意此时的容器必须是运行的

在这里插入图片描述

  • docker中nginx与主机文件映射规则如下
主机                                              docker
/home/docker/nginx/www                           /usr/share/nginx/html #网页文件
/home/docker/nginx/conf/nginx.conf               /etc/nginx/nginx.conf#配置文件
/home/docker/nginx/logs                          /var/log/nginx#日志文件
  • 关闭之前运行的容器
docker stop 容器ID
docker rm 容器ID
  • 运行nginx,同时进行文件挂载
docker run -d -p 9091:80  --name nginx-test -v /home/docker/nginx/www:/usr/share/nginx/html -v /home/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/docker/nginx/logs:/var/log/nginx nginx

在这里插入图片描述

  • 在www目录下建立一个html文件
    在这里插入图片描述
  • 访问nginx
    在这里插入图片描述

3.Nginx的普通配置

通过nginx为多为个域名配置服务,使得通过浏览器可以访问到相应的域名。

3.1 创建html文件

  • 在映射到主机下的/home/docker/nginx/www下创建html文件或者域名的文件夹

在这里插入图片描述

其中blog.hklblog.net和www.hklblog.com是存放不同域名访问的文件路劲。里面都有对应的index.html

3.2 修改host文件

sudo gedit /etc/hosts

在这里插入图片描述

3.3 修改nginx.conf文件

提醒 「路径问题」

  • 这里需要提醒一下,在前面我们已经把nginx中的配置文件映射到主机目录下,我们在主机目录下修改了/home/docker/nginx/www的文件,同时nginx容器中的/usr/share/nginx/html下的文件有会有相同的变化。但是在配置文件中使用的路径得是nginx的,而不应该是主机的路径。
  • 打开主机映射的nginx配置文件
sudo gedit /home/docker/nginx/conf/nginx.conf 

在这里插入图片描述

server中的配置解释参考如下:

在这里插入图片描述

  • 重启docker
docker ps#获取容器的ID
docker restart 容器ID

在这里插入图片描述

  • 在浏览器通过www.hklblog.com
    在这里插入图片描述

  • 以同样的方式为blog,hklblog.net配置服务
    「修改nginx.conf」–「添加一个server」–「重启docker」–「浏览器域名访问」
    在这里插入图片描述

  • 浏览器通过域名访问
    在这里插入图片描述

  • 错误心得

当有时启动容器,通过docker ps 发现容器并没有启动,那么通过docker ps -a可查看容器的状态:
created(已创建)
restarting(重启中)
running(运行中)
removing(迁移中)
paused(暂停)
exited(停止)
dead(死亡)
然后通过查看日志:docker logs 容器ID
可以从中发现未能启动的原因。

在这里插入图片描述

4.代理模式

4.1 正向代理

  • 描述「正向代理」

客户端<---->代理服务器<---->服务器
架设在客户机与目标主机之间,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将原本要直接发送到web服务器上的http请求发送到代理服务器中。

  • 迁移 租房 「正向代理」

A(租客=客户端),B(中介=代理服务器),C(房东=服务器)
A想要组C的房子,但是A并不认识C所以租不到,但是B认识C,A找B帮忙租到了C的房子。
此过程C是不知到是A租了房子,只知道房子租给了B,但是A知道是租C的房子。所以对客户端是透明的。

4.2 反向代理

  • 描述 「反向代理」

客户端—>代理服务器<—>服务器
反向代理服务器架设在服务端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。正式反向代理对真正的服务器起到了保护作用,所以反向代理比较流行。

  • 迁移 租房 「反向代理」

A (租客=客户端),B(中介=代理服务器),C(服务器=房东)
A想租房子,B直接把房子租给了它。但实际上C才是房东,B租房给A的这个过程中,A并不知道谁是真正的房东。

4.3 配置反向代理

  • 案例 「代理访问」

通过访问blog.hklblog.net,来访问www.baidu.com

  • 操作

只需要在nginx的配置当中的server下的location中添加proxy_pass:https:www.baidu.com

 #配置服务blog.hklblog.netserver{#配置虚拟主机的相关参数,一个http块有多个serverlisten		80;#监听端口server_name	blog.hklblog.net;#配置域名root		/usr/share/nginx/html/blog.hklblog.net;#配置根目录location / {#配置请求的路由,以及各种页面的处理情况root		/usr/share/nginx/html/blog.hklblog.net;#根目录index 		index.html index.htm;#默认首页proxy_pass 	https://www.baidu.com;#配置反向代理}}
  • 通过浏览器访问
    在这里插入图片描述

http://chatgpt.dhexx.cn/article/6rPHBNu9.shtml

相关文章

linux配置nginx

1、安装所需环境 Nginx 是 C语言 开发&#xff0c;建议在 Linux 上运行&#xff0c;当然&#xff0c;也可以安装 Windows 版本&#xff0c;本篇则使用 CentOS 7 作为安装环境。 1.1 gcc 安装 安装 nginx 需要先将官网下载的源码进行编译&#xff0c;编译依赖 gcc 环境&#x…

Windows本地配置Nginx

Windows本地配置Nginx 目前Nginx被广泛使用&#xff0c;开发自测遇到获取正确IP的需求&#xff0c;故研究了下nginx在Windows下的搭建。 1 安装 Nginx (engine x) 是一个高性能的HTTP和反向代理服务器&#xff0c;也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔赛索耶夫为俄…

STM32开发 -- STM32初识

如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/80374650 一、STM32 32 位 MCU 系列概述 参看:STM32 微控制器 参看:维基百科 – STM32 STM32 系列 32 位闪存微控制器基于 ARM Cortex M 处理器。 它提供的 32 位产品系列,具有超高性能、实时功能…

VSCode实现STM32开发

VSCode简洁美观、功能强大、插件丰富。多用于桌面开发&#xff0c;或许你不知道vscode还可以用来开发嵌入式。下面就来详细介绍下实现过程 依赖的工具 STM32CUBEMX&#xff0c; ST官方的初始化代码生成工具Visual Studio Code&#xff0c; 个人认为目前最优秀的跨平台代码编辑…

STM32(一)STM32简介

大家好&#xff0c;今天我跟大家分享一下学习STM32的一些收获&#xff0c;希望对初学STM32的同学有所启示。当然&#xff0c;本人也是一名初学者&#xff0c;如果有谈论不妥之处&#xff0c;还望您能够批评指正&#xff0c;不吝赐教&#xff0c;本人将非常感激。如果有什么问题…

stm32 开发 简单介绍+工程创建

一&#xff0c;认知 1.嵌入式概念 国内定义&#xff1a;以应用为中心&#xff0c;以计算机技术&#xff08;冯诺依曼&#xff09;为基础&#xff0c;软硬件可裁剪&#xff0c;适用于对产品的性能、成本、可靠性有严格要求的系统被称为嵌入式系统。 2.8051和STM32 8051属于入…

stm32开发层次介绍(转载)

自STM32标准库出道以来&#xff0c;备受广大工程师和公司的喜爱&#xff0c;但是&#xff0c;从2013年开始&#xff0c;ST逐渐停止了对标准外设库的更新和维护。目前&#xff0c;ST全力推崇HAL库&#xff0c;STM32Cube就是与HAL库配合使用图形化编程官方IDE。 7.1 STM32库简介…

STM32开发

ST意法半导体生产的32位MCU&#xff08;微控制器&#xff09; 硬件 NB-loT通信扣板&#xff1a;SMA天线&#xff0c;NB86-G通信模块&#xff0c;STM32F0主控芯片&#xff0c;外部晶振 一键还原底板&#xff1a;供电电路&#xff0c;LED指示灯&#xff0c;电源开关&#xff0c;五…

在 keil 建立基于STM32开发的工程模板--详细步骤

手把手教你在keil建立STM32的工程模板 1 先说几句1.1 什么是STM32&#xff1f;1.2 什么是cortex?1.3 什么是ARM&#xff1f;1.4 什么是意法半导体&#xff1f; 2 硬件平台2.1 STM32103C8T6最小系统板2.2 电源供电2.3 时钟电路2.4 复位电路2.5 调试和下载电路 3 建立工程模板3.…

STM32开发方式及基本介绍

相关推荐STM32新建一个工程 STM32的开发有三种方式 1.寄存器版本 2.库函数版本 3.HAL库版本 一、库函数开发与寄存器开发的关系 很多人都是从学51单片机转而想进一步学习STM32&#xff0c;他们习惯了51单片机的寄存器开发方式&#xff0c;ST官方库摆在面前会不知道从何下手…

基于STM32开发板的循迹小车设计

STM32的简单应用之循迹小车 前言 智能寻迹基于自动引导机器人系统&#xff0c;可以实现小车自动识别路线。智能寻迹小车运用传感器、单片机、电机驱动及自动控制等技术实现&#xff0c;管理时自动寻迹导航。该技术已经应用于无人驾驶机动车、无人工厂、仓库、服务机器人等多种…

STM32应用开发实践教程:初识STM32

1.1.1 什么是 STM32 1&#xff0e;STM32 概述 STM32 微控制器是意法半导体&#xff08;ST Microelectronics&#xff0c;ST&#xff09;有限公司出品的一系列微控制 器&#xff08;Micro Controller Unit&#xff0c;MCU&#xff09;的统称。 意法半导体有限公司于 1987 年 6 月…

STM32开发指导

思考 如果我们要自己开发一个蓝牙温湿度计,硬件最小系统和外设都有什么?软件逻辑是什么? 需求分析 ● 采集类传感器使用火焰传感器、温湿度传感器、光照传感器中任意一种。 ● 黄色LED模拟智能灯,可以采集到灯状态并可远程控制;五向按键作为灯控开关(家居本地控制)。…

《嵌入式-STM32开发指南》第一部分 入门篇 -第1章 学嵌入式从STM32开始

1.1 STM32简介 ARM公司简介 ARM是Advanced RISC Machines的缩写,它是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的RISC (精简指令集)处理器。公司的特点是只设计芯片,而不生产。它将技术授权给世界上许多著名的半导体、软件和OEM厂商,并提供服务…

STM32的四种开发方式

STM32的四种开发方式 首先看下ST官方给出的四种开发方式的比较 寄存器开发 寄存器编程对于从51等等芯片过渡过来的小伙伴并不陌生&#xff0c;不管你是什么库&#xff0c;最终操作的还是寄存器&#xff0c;所以对于标准库、HAL库、LL库都是在寄存器上的编程&#xff0c;所以可…

使用STM32固件库开发GD32 汇总

文章目录 GD32与STM32异同1. 相同点2. 外围硬件区别3. 内部结构差别4. 功耗区别(以128k以下容量的作为参考)5. 内部FLASH 区别 使用STM32库开发时钟配置区别1. 晶振起振区别描述解决方法 2. 部分客户使用有源晶振出现问题&#xff0c;在 GD32F103 小容量产品&#xff0c;发现会…

STM32开发必备知识篇:STM32的运行机制

时间飞逝&#xff0c;转眼间已经硕士毕业工作第四年了&#xff0c;嵌入式研发成长道路上曲折坎坷&#xff0c;所以这也是我今年撰写博客的初心&#xff0c;即分享技术积累和研发经验&#xff0c;目前主要分为STM32和FPGA两个专辑&#xff0c;都包括开发必备知识篇和实战项目例程…

如何评判STM32各个MCU的性能?

很多人说STM32性能太弱&#xff0c;那你了解这个性能是如何得出来的吗&#xff1f; 1写在前面 我们经常听见某手机发布会&#xff0c;安兔兔跑分多少多少&#xff0c;其实这个跑分就是体现手机性能的一个指标。 我们使用STM32开发产品&#xff0c;选择MCU时&#xff0c;一般会综…

STM32各系列MCU性能对比及测试说明

置顶/星标公众号&#xff0c;不错过每一条消息&#xff01; 很多人说STM32性能太弱&#xff0c;那你了解这个性能是如何得出来的吗&#xff1f; 1写在前面 我们经常听见某手机发布会&#xff0c;安兔兔跑分多少多少&#xff0c;其实这个跑分就是体现手机性能的一个指标。 我们使…

win xp虚拟机

做嵌入式&#xff0c;用的ADS版本太老了&#xff0c;在xp系统上更方便&#xff0c;所以昨天装了一个。 其实我是一个搬运工&#xff0c;主要参考了另一个人的步骤:点击打开链接 只是第一次让输序列号的时候跳过去了。 要镜像可以留邮箱&#xff0c;好像不能直接放在这里&…