nginx 作为一款优秀的反向代理软件,我是特别喜欢使用的。但之前没使用 docker 的时候,都是使用服务器本地的 nginx。这次计划使用 docker 上的 nginx 来进行配置。下面就记录一下配置的过程。
本次配置的环境如下

服务器 Centos 8.x
docker 19.03.13

安装 docker nginx

  1. docker pull nginx

创建需要挂载的目录

  1. # 创建 conf.d 目录与 logs 目录
  2. mkdir -p /home/docker_data/nginx/{conf.d,logs}
  3. # 给予访问权限
  4. chmod -R 777 /home/docker_data/nginx

复制配置文件

  1. 先创建一个任意的 nginx 容器

    1. docker run -d --name nginx nginx
  2. 将 nginx 容器内的配置文件 cp 一份到 宿主机

    1. # 查看容器 id
    2. docker ps -a
    3. # CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    4. # 9fdb03b6080e nginx "/docker-entrypoint.…" 11 seconds ago Up 10 seconds 80/tcp nginx
    5. # 拷贝容器下的配置至宿主机
    6. docker cp 9fdb03b6080e:/etc/nginx/nginx.conf /home/docker_data/nginx/
    7. docker cp 9fdb03b6080e:/etc/nginx/conf.d/default.conf /home/docker_data/nginx/conf.d/
  3. 删除此 nginx 容器

    1. docker rm -f 9fdb03b6080e

    启动 nginx 并挂载配置文件目录

    1. docker run --name nginx -p 80:80 \
    2. -v /home/docker_data/nginx/nginx.conf:/etc/nginx/nginx.conf \
    3. -v /home/docker_data/nginx/conf.d:/etc/nginx/conf.d \
    4. -v /home/docker_data/nginx/logs:/var/log/nginx \
    5. --net=host
    6. -d nginx

    使用 Https 访问

    上面的设置,只能通过 http 来进行访问,如果想要使用 https,还需要关联一下证书文件。以及释放 443 端口。

    1. docker run -p 80:80 -p 443:443 \
    2. -v /home/docker_data/nginx/nginx.conf:/etc/nginx/nginx.conf \
    3. -v /home/docker_data/nginx/conf.d:/etc/nginx/conf.d \
    4. -v /home/docker_data/nginx/logs:/var/log/nginx \
    5. -v /home/cert:/home/cert \
    6. --name nginx \
    7. --net=host
    8. -d nginx