Nginx是一款高性能的Web和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。在《Mac系统docker安装配置及基本使用》中已使用过nginx镜像创建docker容器,这里介绍如何通过nginx容器映射宿主机站点目录,从而实现网页浏览。

1 获取官方Nginx镜像

获取镜像命令如下,请在终端中执行

# 当前latest版本对应1.17.9版本
# docker pull nginx:1.17.9
docker pull nginx

2 创建本地目录

~/docker/目录下创建nginx文件夹,然后在nginx文件夹内创建以下目录

  • conf:存放nginx配置
  • www:存放nginx站点数据文件
  • log:存放nginx运行日志

3 准备本地目录文件

3.1 nginx配置文件

先临时创建一个nginx容器,将容器内的nginx配置文件复制到本地,后面根据实际需要调整本地宿主机的配置文件,并将本地配置文件挂载到nginx容器内部,nginx容器内配置文件目录为/etc/nginx。操作命令如下

# 创建临时容器
docker run --name tmpnginx -d nginx

# 复制容器内的配置文件目录到本地文件目录
docker cp tmpnginx:/etc/nginx ~/docker/nginx/conf

# 删除临时容器
docker rm -f tmpnginx

nginx配置文件复制到本地后做相应调整,假设本地的~/docker/nginx/www目录内包含多个站点,目前只放一个站点site1,nginx容器使用site1。先备份默认的nginx配置文件~/docker/nginx/conf/conf.d/default.conf~/docker/nginx/conf/conf.d/default.conf.bak,然后调整~/docker/nginx/conf/conf.d/default.conf内容如下,使站点首页指向site1站点内的index.html页面:

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/www/site1;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

群晖怎么改nginx的配置 群晖搭建nginx_nginx

3.2 站点静态文件

~/docker/nginx/www目录下放置site1文件夹,文件夹内存放静态站点文件,文件内容可根据具体情况而定。

3.3 nginx文件目录结构

经过上面两个步骤,nginx文件夹下目录结构如下图

群晖怎么改nginx的配置 群晖搭建nginx_mac_02

4 创建nginx容器

上一步骤中准备好所有文件后,创建正式的nginx容器,命令如下

# --name nginx 容器名称为nginx
# -v ~/docker/nginx/conf:/etc/nginx 挂载配置目录
# -v ~/docker/nginx/log:/var/log/nginx 挂载日志目录
# -v ~/docker/nginx/www:/usr/share/www 挂载站点目录
# -p 8880:80 本地8880端口映射容器内部的80端口
# -d 后台运行
docker run --name nginx -v ~/docker/nginx/conf:/etc/nginx -v ~/docker/nginx/log:/var/log/nginx -v ~/docker/nginx/www:/usr/share/www -p 8880:80 -d nginx

5 访问容器内站点

上一步骤中,宿主机的8880端口映射到了nginx容器的80 端口,所以在宿主机使用8880端口访问容器内网站。如下图

群晖怎么改nginx的配置 群晖搭建nginx_nginx_03


此时日志目录~/docker/nginx/log下已有访问日志,如下图

群晖怎么改nginx的配置 群晖搭建nginx_mac_04

参考

[1] 官方nginx容器镜像