Linux docker nginx 安装

环境

  • Ubuntu 20.04 LTS

  • Docker version 20.10.12

拉取镜像

docker pull nginx

默认拉取最新的,可自行https://hub.docker.com/_/nginx?tab=tags[指定版本]

创建挂载文件

# 存放nginx日志
mkdir /var/log/nginx
# 存放nginx配置
mkdir /opt/nginx

临时启动一个nginx,复制配置文件

docker run -d --name nginx nginx
# 将容器中的nginx主要配置目录复制到宿主机器中,方便修改,并永久保存,保存目录为 /opt/nginx
docker cp nginx:/etc/nginx/ /opt/nginx

# 这个容器启动,主要是为了复制配置文件,因此复制完成后,需要删除,等待修改了nginx配置文件,再重新启动一个容器。
# 停止容器
 docker container stop nginx
# 删除容器
 docker container rm nginx

配置nginx文件

/opt/nginx/ 文件目录如下

root@VM-20-14-ubuntu:/opt/nginx# ll
total 36
drwxr-xr-x 3 root root 4096 Feb 17 14:39 ./
drwxr-xr-x 4 root root 4096 Feb 17 14:14 ../
drwxr-xr-x 3 root root 4096 Feb 17 14:49 conf.d/
-rw-r--r-- 1 root root 1007 Jan 25 23:03 fastcgi_params
-rw-r--r-- 1 root root 5349 Jan 25 23:03 mime.types
lrwxrwxrwx 1 root root   22 Jan 25 23:13 modules -> /usr/lib/nginx/modules
-rw-r--r-- 1 root root  648 Jan 25 23:13 nginx.conf
-rw-r--r-- 1 root root  636 Jan 25 23:03 scgi_params
-rw-r--r-- 1 root root  664 Jan 25 23:03 uwsgi_params

备注一下:

我看了很多文章,都是在 nginx.conf 中进行配置,但实际推荐的是将配置文件放在 conf.d 目录下,里面有一个官方的模板 defualt.conf, 这个配置监听默认的80端口。所以依葫芦画瓢,优雅的方式是复制一个 default.conf 文件,再根据实际修改。

这里以配置 ssl 访问为例:

cd conf.d
# 创建一个目录用于存放证书文件
mkdir certs
# 开始配置https访问
vi https.conf

https.conf 内容如下

server {
    listen 443 ssl;
    server_name wanghengzhi.com www.wanghengzhi.com;
    # 这里要注意证书的目录(是证书映射到docker容器中的目录) /etc/nginx/conf.d/certs
    ssl_certificate     /etc/nginx/conf.d/certs/wanghengzhi.com_bundle.crt;
    ssl_certificate_key /etc/nginx/conf.d/certs/wanghengzhi.com.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    ssl_prefer_server_ciphers on;

    location / {
    # 这里进行请求代理,将所有 / 请求全部转发到宿主系统 172.17.0.1:8090 应用中(我这里是一个java项目)
        proxy_pass http://172.17.0.1:8090/;
    }
}

修改完成后保存配置文件即可, 更全面的配置去查官网手册。

创建nginx容器,并启动

docker run -d --name my-nginx \
-p 80:80 -p 443:443 \
--restart always
-v /opt/nginx/:/etc/nginx \
-v /var/log/nginx-log:/var/log/nginx \
nginx:latest

参数说明: - -d: 后台运行 - –name: 容器名字 - -p: 这里映射2个端口,一个80,一个443 - –restart always: docker启动时,nginx也将启动 - -v: 挂载目录,/opt/nginx/:/etc/nginx 将 宿主系统中 /opt/nginx 挂载到 docker 容器中的/ect/nginx中,这里是配置文件,同理挂载一个日志目录,如果有问题,可以直接查看宿主系统中的日志 /var/log/nginx - nginx:latest: 镜像名称