• Linux +Docker +Nginx 部署代理转发初探


    很多开发人员仅仅只会码代码,如果让开发人员部署一些深入点的东西,或者做负载均衡等,很多开发人员估计就懵逼了,作为一个专业的开发还需要懂一些基本的运维知识;虽然说在互联网行业中,中小企业都有一个牛逼的运维工程师,基本上也没有什么开发人员的事情,所以很多开发人员仅仅知道nginx这个事情,但是不会用,下面我来讲解下Nginx 服务的基本知识.

    Nginx 基本概念

    这里就不详细说了,[请参考]

    Docker 安装部署Nginx

    第一步先拉取Nginx最新版本镜像

    使用docker pull xxx 指令

    
    docker pull nginx:latest
    
    

    或者

    
    docker pull nginx:指定版本号
    
    

    第二步 可以先查看下本地镜像

    docker images 指令

    
    docker images
    
    //结果输出如下
    
    [root@10-10-165-57 logs]# docker images
    
    REPOSITORY          TAG                IMAGE ID            CREATED            SIZE
    
    docker.io/nginx    latest              568c4670fa80        3 weeks ago        109 MB
    
    

    | 第三步 创建运行容器

    这里我直接映射80端口,还没有映射任务文件的情况

    
    docker run -d -p 80:80 --name nginx docker.io/nginx
    
    

    好了,这时候nginx 服务已经运行起来了,可以通过docker ps查看运行中的容器

    
    [root@10-10-165-57 logs]# docker ps
    
    CONTAINER ID        IMAGE              COMMAND                  CREATED            STATUS              PORTS                NAMES
    
    34ae8c48da89        docker.io/nginx    "nginx -g 'daemon ..."  25 minutes ago      Up 13 minutes      0.0.0.0:80->80/tcp  nginx
    
    

    以上已经运行了一个命名为nginx 的容器,现在可以访问了

    假设我的http://117.50.60.123/ 以及解析到我这台linux服务器中,则可以直接访问http://117.50.60.123/ 得到界面如下

    (https://note.youdao.com/yws/api/personal/file/WEB75fca319455efd463344a0c9b17675c0?method=download&shareKey=fedb7bb411c88a3b1c95b138a9dd061f)

    好了现在nginx 已经部署完成

    Docker Nginx 目前挂载映射

    上面部署好Nginx后,还不够,我们还需要做负载均衡以及代理转发等相关配置,这个配置文件我们可以直接进入容器中配置,也可以把容器中的文件挂载映射到宿主机上,以方便进行配置

    | 第一步,我们先进入容器中查看下nginx的目录结构

    
    [root@10-10-165-57 logs]# docker exec -it nginx /bin/bash
    
    //输入命令后进入容器的状态
    
    root@34ae8c48da89:/#
    
    

    | 第二步,进入容器的nginx目录中,并且查看目录结构

    
    //进入容器中的/etc/nginx 目录中
    
    root@34ae8c48da89:/etc/nginx# 
    
    // 查看 /etc/nginx 中的文件结构
    
    root@34ae8c48da89:/etc/nginx# ls -a
    
    .  ..  conf.d  mime.types  nginx.conf
    
    root@34ae8c48da89:/etc/nginx#
    
    

    | nginx 目录解析

    
    |- conf.d  //nginx 配置文件 包含default.conf 的默认配置文件
    
    |- mime.types //nginx代理的请求头文件
    
    |- nginx.conf //nginx 代理的入口配置文件,配置反向代理及负载均衡从这个文件开始
    
    

    了解了nginx的配置目录结构后,我们nginx的运行过程中有很多的访问日志,这个日志文件记录在哪里呢?我们可以先查看下nginx.conf 配置

    
    //查看配置文件的指令 cat nginx.conf
    
    root@34ae8c48da89:/etc/nginx# cat nginx.conf
    
    user  nginx;
    
    worker_processes  1;
    
    error_log  /var/log/nginx/error.log warn;
    
    pid        /var/run/nginx.pid;
    
    events {
    
        worker_connections  1024;
    
    }
    
    http {
    
        include      /etc/nginx/mime.types;
    
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    
                          '$status $body_bytes_sent "$http_referer" '
    
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
    
        sendfile        on;
    
        #tcp_nopush    on;
    
        keepalive_timeout  65;
    
        #gzip  on;
    
        include /etc/nginx/conf.d/*.conf;
    
    }
    
    root@34ae8c48da89:/etc/nginx#
    
    

    从上面的配置文件中可以看到nginx 的日志文件在默认在/var/log/nginx的目录中;现在我们以及搞清楚了两个目录文件/etc/nginx 和/var/log/nginx目录结构,那我们需要把这两个目录文件挂载到宿主机下面,方便我们日后的配置及日志的查看工作

    | 第三步,推出nginx 容器中

    
    // exit 退出容器的命令
    
    root@34ae8c48da89:/# exit
    
    exit
    
    [root@10-10-165-57 logs]#
    
    

    | 第四部,创建宿主机的挂载目录

    创建nginx的目录

    
    [root@10-10-165-57 /]# mkdir /home/root/nginx
    
    

    nginx目录中创建日志文件目录

    
    [root@10-10-165-57 /]# mkdir /home/root/nginx/logs
    
    

    | 第五步,创建容器挂载

    
    docker run -d -p 80:8080 -v /home/root/nginx:/etc/nginx -v /home/root/nginx/logs:/var/log/nginx --name nginx docker.io/nginx
    
    

    运行上面的挂载创建容器后会提示不能创建,主要由于之前我们创建了一个nginx的容器,占用了80端口导致,我们需要停止并且删除之前创建的nginx容器

    停止和删除如下

    
    docker stop nginx //停止运行的nginx容器
    
    docker rm nginx //删除nginx容器
    
    //再创建新的nginx容器并且挂载到宿主机文件目录中
    
    docker run -d -p 80:8080 -v /home/root/nginx:/etc/nginx -v /home/root/nginx/logs:/var/log/nginx --name nginx docker.io/nginx
    
    

    好了以上就把容器中的相关配置目录和日志目录挂载到宿主机文件目录中了,挂载好后我们可以进入宿主机目录创建我们自己的反响代理配置了,后面就不再描述,具体的反向代理及负载均衡相关配置详解下回再详细讲解

  • 相关阅读:
    python 文件批量改名重命名 rename
    AN INTEGER FORMULA FOR FIBONACCI NUMBERS
    python opencv cv2 imshow threading 多线程
    adb shell 查看当前与用户交互的 activity
    sublime text build system automatic ctrl/cmd+B自动选择 python2 或 python3
    pip 源的问题
    Mac 安装 Android commandlinetools 各种报错的问题
    GIMP 一键均匀添加多条参考线 一键均匀切分图片
    Shell 脚本如何输出帮助信息?
    raspberry pi 配置
  • 原文地址:https://www.cnblogs.com/jlion/p/12392433.html
Copyright © 2020-2023  润新知