0%

使用Docker安装配置Nginx

前言

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

前置条件是安装配置好了docker环境,安装方法参考《Docker入门》。已知docker宿主机IP为192.168.56.130。

安装Nginx

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

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

3、拷贝nginx镜像中的文件到宿主机

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

4、启动nginx服务

1
2
3
4
5
docker run --name vk-nginx -d \
-p 80:80 -p 443:443 \
-v /opt/nginx/conf.d:/etc/nginx/conf.d:ro \
-v /opt/nginx/html:/usr/share/nginx/html:ro \
nginx:1.17.7

以上命令:

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

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

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

配置使用Nginx

以添加 www.voidking.com 域名为例,参考《Hexo启用https加密连接》《Hexo加速访问》

1、下载博客项目

1
2
cd /opt/nginx/html
git clone https://gitee.com/voidking/voidking.github.io.git voidking

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

3、创建配置文件

1
2
cd /opt/nginx/conf.d
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
server {
listen 80;
server_name www.voidking.com;
return 301 https://$server_name$request_uri;
}

server {
# SSL configuration
listen 443 ssl;
listen [::]:443 ssl;
ssl on;

server_name www.voidking.com;

ssl_certificate /etc/nginx/conf.d/ssl/1_www.voidking.com_bundle.crt;
ssl_certificate_key /etc/nginx/conf.d/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;

location / {
root /usr/share/nginx/html/voidking/;
index index.html;
}
}

4、重启nginx
docker restart vk-nginx

5、查看是否启动成功

1
2
docker ps
docker logs vk-nginx

发现nginx服务已经正常启动,但是存在一个警告:

1
[warn] 1#1: the "ssl" directive is deprecated, use the "listen ... ssl" directive instead in /etc/nginx/conf.d/www.voidking.com.conf:11

可以选择去掉第11行的配置,警告就会消失。

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