开始安装nginx。
1、直接拉取最新的nginx镜像
docker pull nginx
2、新建一些目录,把nginx容器内的相关文件夹挂载到宿主机上,主要方便改写配置,其次是删除容器,这些文件不会丢失
mkdir -p /root/nginx/{conf,html,logs,ssl}
3、启动一个nginx容器,用来cp一些文件,放到步骤2新建的文件夹里面
docker run --name nginx -p 80:80 -d nginx
docker cp 0a5b63830be2:/etc/nginx/nginx.conf /root/nginx/conf/
docker cp 0a5b63830be2:/etc/nginx/conf.d /root/nginx/
docker cp 0a5b63830be2:/usr/share/nginx/html/index.html /root/nginx/html/
4、停止当前nginx容器,并删除
docker rm -f 0a5b63830be2
5、生成证书并放到宿主机ssl目录下面
6、修改配置文件
server {
listen 80;
listen [::]:80;
server_name www.telami.cn;
rewrite ^(.*) https://$server_name$1 permanent;
}
server {
listen 443 ssl;
server_name www.xxx.cncom
ssl_certificate /etc/nginx/ssl/xxx.com.pem;
ssl_certificate_key /etc/nginx/ssl/xxx.com.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
7、启动新的nginx容器
docker run \
--name nginx \
-p 443:443 -p 80:80 \
-v /root/nginx/logs:/var/log/nginx \
-v /root/nginx/html:/usr/share/nginx/html \
-v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /root/nginx/conf.d:/etc/nginx/conf.d \
-v /root/nginx/ssl:/etc/nginx/ssl/ \
--privileged=true -d --restart=always nginx
简单解释一下:
- -v:挂载宿主机的目录,冒号”:”前面的目录是宿主机目录,后面的目录是容器内目录;
- -d:后台运行;
- –restart=always:重启docker时,自动重启改容器;
说到这里,有一个点需要注意一下,就是上面的defaul.conf文件中,出现的绝对路径都是容器内的路径,而不是宿主机的。
配置起来有些不方便