一个计算机技术爱好者与学习者

0%

好好学Nginx:使用Docker安装配置Nginx

1. 前言

《CentOS7设置nginx开机自启动》一文中学习了在CentOS7中安装配置Nginx的方法,本文学习一下使用Docker安装配置Nginx的方法。

前置条件是安装配置好了docker环境,安装方法参考《Docker入门》

2. 安装Nginx

1、登录dockerhub查看需要的Nginx - Docker Official Images

2、下载nginx镜像(以1.17.7为例)

1
docker pull nginx:1.17.7

3、创建nginx挂载目录

1
mkdir -p /opt/nginx/{conf,html,ssl,work,log}

4、拷贝nginx镜像中的配置到宿主机

1
2
3
4
5
6
docker run --name tmp-nginx -d nginx:1.17.7
docker cp tmp-nginx:/etc/nginx/nginx.conf /opt/nginx/conf/
docker cp tmp-nginx:/etc/nginx/conf.d/ /opt/nginx/conf/
docker cp tmp-nginx:/usr/share/nginx/html/. /opt/nginx/html/
docker stop tmp-nginx
docker rm tmp-nginx

5、启动nginx服务

1
2
3
4
5
6
7
8
9
10
docker run --name vk-nginx -d --privileged=true \
-p 80:80 -p 443:443 \
-v /opt/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /opt/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /opt/nginx/ssl:/etc/nginx/ssl \
-v /opt/nginx/html:/usr/share/nginx/html \
-v /opt/nginx/work:/usr/share/nginx/work \
-v /opt/nginx/log:/var/log/nginx \
-v /etc/localtime:/etc/localtime \
nginx:1.17.7

以上命令:

  • 命名容器为vk-nginx,后台运行
  • 映射宿主机80、443端口到容器的80、443端口
  • 挂载宿主机文件 /opt/nginx/conf/nginx.conf 到容器文件 /etc/nginx/nginx.conf
  • 挂载宿主机目录 /opt/nginx/conf/conf.d 到容器目录 /etc/nginx/conf.d
  • 挂载宿主机目录 /opt/nginx/ssl 到容器目录 /etc/nginx/ssl
  • 挂载宿主机目录 /opt/nginx/html 到容器目录 /usr/share/nginx/html
  • 挂载宿主机目录 /opt/nginx/work 到容器目录 /usr/share/nginx/work
  • 挂载宿主机目录 /opt/nginx/log 到容器目录 /var/nginx/log
  • 挂载宿主机目录 /etc/localtime 到容器目录 /etc/localtime

更多启动命令参数可以参考How to use this image

6、验证安装
(1)docker ps,nginx启动正常的话就可以看到vk-nginx容器。
(2)curl localhost,可以看到html文本。
(3)浏览器访问 http://8.136.13.58 ,可以看到Welcome to nginx!

3. 常用命令

3.1. 测试配置

1
docker exec -it vk-nginx nginx -t

3.2. 重新加载配置

1
docker exec -it vk-nginx nginx -s reload

3.3. 重启nginx

1
docker restart vk-nginx

4. 配置Web服务

参考文档:

以配置 www.voidking.com 域名的Web服务为例。

1、下载博客项目

1
2
mkdir /opt/nginx/work
git clone https://gitee.com/voidking/voidking.github.io.git voidking

2、上传证书
上传 1_www.voidking.com_bundle.crt2_www.voidking.com.key 到 /opt/nginx/conf.d/ssl 目录

3、创建配置文件

1
2
cd /opt/nginx/conf/conf.d
vim www.voidking.com.conf

内容为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
server {
listen 80;
listen 443 ssl;
server_name www.voidking.com;
charset utf-8;

ssl_certificate /etc/nginx/ssl/1_www.voidking.com_bundle.crt;
ssl_certificate_key /etc/nginx/ssl/2_www.voidking.com.key;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!ADH:!EXPORT56:RC4+RSA:+MEDIUM;
ssl_prefer_server_ciphers on;

if ($ssl_protocol = "") {
return 301 https://$host$request_uri;
}

location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

root /usr/share/nginx/work/voidking/;
index index.html;
}

error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/work/voidking/;
index 404.html;
}
location ~ /\.git {
return 404;
}
}

4、重启nginx

1
docker restart vk-nginx

5、查看是否启动成功

1
2
3
docker ps
docker logs vk-nginx
docker logs --tail 10 vk-nginx

至此, www.voidking.com 域名配置完成,在dnspod添加好解析即可访问,nice。

  • 本文作者: 好好学习的郝
  • 原文链接: https://www.voidking.com/dev-docker-nginx/
  • 版权声明: 本文采用 BY-NC-SA 许可协议,转载请注明出处!源站会即时更新知识点并修正错误,欢迎访问~
  • 微信公众号同步更新,欢迎关注~