• Docker配置nginx


    1.Docker安装nginx

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

    在这里插入图片描述

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

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

    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
    #注意此时的容器必须是运行的
    
    • 1
    • 2

    在这里插入图片描述

    • 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#日志文件
    
    • 1
    • 2
    • 3
    • 4
    • 关闭之前运行的容器
    docker stop 容器ID
    docker rm 容器ID
    
    • 1
    • 2
    • 运行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
    
    • 1

    在这里插入图片描述

    • 在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
    
    • 1

    在这里插入图片描述

    3.3 修改nginx.conf文件

    提醒 「路径问题」

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

    在这里插入图片描述

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

    在这里插入图片描述

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

    在这里插入图片描述

    • 在浏览器通过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.net
        server{#配置虚拟主机的相关参数,一个http块有多个server
    	listen		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;#配置反向代理
    	}
     }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 通过浏览器访问
      在这里插入图片描述
  • 相关阅读:
    微服务拆分
    Docker安装canal、mysql进行简单测试与实现redis和mysql缓存一致性
    matlab用dde23求解带有固定时滞的时滞微分方程
    万字详解:推荐系统的知识与整体框架
    Git工具使用全解
    嵌入式数据库开发编程(四)——DDL、DML
    C#入门教程
    p18 线性代数,行阶梯型矩阵
    day8-机器学习模型评估
    1711: 【穷举】满足条件的整数
  • 原文地址:https://blog.csdn.net/qq_45031509/article/details/128043584