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: 镜像名称