• 容器(docker)内运行Nginx


    容器内运行nginx其实很简单,但是一开始还是浪费了我很多时间。这里写下来给大家省点时间。

    1、创建nginx文件夹,放置各种配置及日志等。

    mkdir /docker/nginx

    docker 文件夹是我存放所有基础设施容器的地方。

    2、创建nginx配置文件

    cd /docker/nginx
    vim nginx.conf

    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;
    }
    View Code

    最后一句include /etc/nginx/conf.d/*.conf;

    这里的*.conf就是子配置。我只创建了一个default.conf

    mkdir /docker/nginx/conf.d
    cd /docker/nginx/conf.d
    vim default.conf

    在default.conf里面加入你的server级别的配置。

    我这里只是监听了80端口,并反向代理到了5000端口

    server {
        listen       80;
        server_name  localhost;
    
        #charset koi8-r;
        #access_log  /var/log/nginx/host.access.log  main;
    
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://127.0.0.1:5000;      # 这里设置你要代理的ip+端口
        }
    }
    View Code

    3、创建docker-compose.yml容器编排

    vim /docker/nginx/docker-compose.yml

    docker-compose对格式要求很严格注意里面的空格。

    解释下我的设置

    restart  永远重启

    image 从nginx镜像拉取

    ports 输出使用80,443端口

    volumes 挂载外部卷到docker内部。这样就可以使用我们刚才创建好的配置了。

    (这里面:ro的意思是只读的意思,表示第一第二个卷只能被容器读取不能写入)

    docker-compose文件内容如下方便大家copy

    version: '3.0'
    
    services:
      nginx:
        restart: always
        image: nginx
        ports:
          - 80:80
          - 443:443
        volumes:
          - /docker/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
          - /docker/nginx/conf.d:/etc/nginx/conf.d:ro
          - /docker/nginx/log:/var/log/nginx
    View Code

    4、运行

    要保证在我们刚才创建的目录里

    cd /docker/nginx
    
    docker-compose up -d

    加-d的意思是后台运行。大家可以试试不加 -d

    5、其他 

    • 如果你的nginx版本跟你的配置不一致,你可以进入到容器内看看。
    docker exec -it 容器id /bin/bash
    • 停止镜像 
    docker-compose down
  • 相关阅读:
    惊讶
    BLOG休假
    因考试得福
    Shape of My HeartSting !
    一个月的第一天了
    BLOG开张喽~~~
    该走了
    脏话
    EditText的属性
    游戏引擎
  • 原文地址:https://www.cnblogs.com/tianyamoon/p/10270461.html
Copyright © 2020-2023  润新知