zoukankan      html  css  js  c++  java
  • centos7一步一步搭建docker nginx 及重点讲解

     系统环境:centos7.7 (VMware中) 

     images版本:nginx:latest (截止2020.01.10最新版)

     1、拉取镜像 docker pull nginx

      

     2、启动nginx容器。  

    docker run --name my_nginx_2020 -d -p 80:80 --restart=always -e TZ="Asia/Shanghai" nginx:latest

      

     3、访问80站点。

      

     4、挂载nginx配置文件到宿主机。以上访问正常,但如果要配置自己的项目文件,或者修改访问路径文件需要登录到容器中去,还需要安装vi等,所以我们下面使用挂载文件挂载到宿主机,一切修改在宿主机操作,还可以避免配置丢失。

      A、登录nginx容器。docker exec -it my_nginx_2020 bash。进入/etc/nginx 查看文件列表,其中nginx.conf 配置nginx的全局基础属性配置。conf.d 存放访问路径的配置文件,本文不介绍nginx相关使用介绍,请自行搜索配置参数含义~~

        

      B、more nginx.conf 查看配置内容。通过文件内容可以看到日志是存储在容器的 /var/log/nginx 文件夹下。更多配置要去conf.d 文件夹下查看。

        

      C、查看conf.d文件夹内文件配置。看到conf.d文件夹下只有一个default.conf文件,more default.conf 查看其内容,也可看到日志文件存储在/var/log/nginx文件夹下,而项目html和静态文件保存在/usr/share/nginx/html下。

        

      D、退出容器,并复制配置文件等。

        

      E、修改nginx.conf 和conf.d 中的默认文件,然后绑定到各自对应的容器文件。后来我转念一想,其实可以将两者内容合并到nginx.conf文件,那么只需要修改/www/my_nginx/nginx.conf 并挂载即可。以下是对nginx.conf的一个简单配置。

    # user root;
    worker_processes 8;
    
    events {
        worker_connections  10240;
    }
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$host "$request" $remote_addr $remote_user [$time_local] $status $request_time $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main; # 这个地址竟然可以是docker里面的绝对路径!!!,因为-v挂载到了此处
        keepalive_timeout  300;
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        send_timeout 300;
    
        client_max_body_size 200m;
        sendfile        on;
        #tcp_nopush     on;
        #gzip  on;
    
        limit_req_zone $binary_remote_addr zone=req_limit_per_ip_second:1m rate=10r/s;
        limit_req_zone $binary_remote_addr zone=req_limit_per_ip_minute:10m rate=100r/s;
    
        #server配置
        server{
            listen 80;
            server_name mytest;
            
            location ~ .*.(php|php5|jsp)$ {
                deny all;
            }
    
            #
            location / {
    
                root   /usr/share/nginx/html; # 这个地址竟然可以是docker里面的绝对路径!!!,因为-v挂载到了此处
                index  index.html index.htm;
            }
    
        }
    }

      F、修改/www/my_nginx/html/index.html 文件。通过上面的第三步我们知道首页显示的内容,现在我们收到修改成显示Hello World

        

        

      G、删除原来启动的nginx容器,重新运行一个挂载文件的容器。

        

    docker run --name my_nginx_2020 -d -p 80:80 --restart=always -e TZ="Asia/Shanghai" -v /www/my_nginx/html:/usr/share/nginx/html -v /www/my_nginx/log:/var/log/nginx -v /www/my_nginx/nginx.conf:/etc/nginx/nginx.conf:ro nginx:latest

    参数解析:
    -d 后台运行容器,并返回容器ID;
    --name 为容器起一个容易区分且容易书写的名字
    -p 映射宿主机端口到容器端口,宿主机端口:容器端口
    --restart=always 机器重启时自动启动容器
    -e       设定一些必须的环境变量。
              -e TZ="Asia/Shanghai" 设定时区为上海,强烈建议国内设定,否则容器内打印的所有日志时间都会差8小时。
    -v       挂载宿主机文件到容器。
              -v /www/my_nginx/html:/usr/share/nginx/html  挂载html等静态文件
              -v /www/my_nginx/log:/var/log/nginx        挂载日志文件
              -v /www/my_nginx/nginx.conf:/etc/nginx/nginx.conf:ro  挂载配置文件

    原文地址:https://www.cnblogs.com/jying/p/12182715.html
    作者:一定会去旅行
    欢迎任何形式的转载,但请务必注明出处。
    限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。

      H、再次访问80站点。发现已经显示我们的新内容。

        

        

      G、重启nginx容器。以上页面最后显示的是中文叹号!,默认的html应该是编码不对,我们将“!”其去掉,然后重启容器。这里我推荐stop再start,因为如果用restart,有时候配置内容有错后nginx不会被重启,而还是原来的配置,docker ps发现也在运行,但其实是没有重启,会对排错造成很大的困扰。

        

        

     5、配置完成~~

      

  • 相关阅读:
    交换机工作原理
    MyBatis框架的使用及源码分析(一) 配置与使用
    MySQL5.6安装步骤
    mysql创建用户,并授权
    命令行访问远程mysql数据库
    [mybatis] mybatis错误:Invalid bound statement (not found)
    【大数据】每秒十万笔交易的数据架构解读
    【mybaits】Mybatis中模糊查询的各种写法
    【redis】 linux 下redis 集群环境搭建
    [linux] linux下编译安装zlib
  • 原文地址:https://www.cnblogs.com/jying/p/12182715.html
Copyright © 2011-2022 走看看