环境
- CentOS Linux release 7.6.1810 (Core);
- docker 18.09.6;
安装
根据官方镜像,安装nginx最新版:
docker container run \
-d \
-p 80:80 \
--rm \
--name nginx \
nginx
拷贝配置文件
拷贝配置文件
[michael@centos7 etc]$ cd /etc
[michael@centos7 etc]$ sudo docker container cp nginx:/etc/nginx ./
映射网页文件及配置文件
创建目录并映射容器的网页文件:
[michael@centos7 etc]$ cd /etc/nginx
[michael@centos7 nginx]$ chown -R michael:www ./
[michael@centos7 nginx]$ mkdir html
停止容器并重启容器以完成配置文件和网页文件的映射
[michael@centos7 nginx]$ docker container stop nginx
[michael@centos7 nginx]$ docker container run \
--rm \
--name nginx \
--volume /etc/nginx/html:/usr/share/nginx/html \
--volume /etc/nginx:/etc/nginx \
-p 80:80 \
-d \
nginx
测试
在/etc/nginx/html
下新建index.html,内容如下:
<h1>Hello World</h1>
浏览器中访问,显示上面内容,说明安装成功。
申请证书
这里我申请的是LETSENCRYPT/Certbot,参考:Nginx启用Let’s Encrypt SSL证书 ,使用临时目录验证的方式。
假设你已经将域名解析到服务器,我的配置如下:
server{
listen 80;
server_name centos.aitlp.com;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
在cerbot目录下执行:
./certbot-auto certonly --webroot --email admin@4spaces.org -w /etc/nginx/html -d centos.aitlp.com
正常的证书已经申请成功,默认路径为/etc/letsencrypt/
目录下。
修改nginx配置文件:
server{
listen 80;
server_name centos.aitlp.com;
#告诉浏览器有效期内只准用 https 访问
add_header Strict-Transport-Security max-age=15768000;
#永久重定向到 https 站点
return 301 https://$server_name$request_uri;
}
server {
#启用 https, 使用 http/2 协议, nginx 1.9.11 启用 http/2 会有bug, 已在 1.9.12 版本中修复.
listen 443 ssl http2;
server_name centos.aitlp.com;
add_header X-Frame-Options DENY;
#告诉浏览器不要猜测mime类型
add_header X-Content-Type-Options nosniff;
#证书路径
ssl_certificate /etc/letsencrypt/live/centos.aitlp.com/fullchain.pem;
#私钥路径
ssl_certificate_key /etc/letsencrypt/live/centos.aitlp.com/privkey.pem;
#安全链接可选的加密协议
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
#可选的加密算法,顺序很重要,越靠前的优先级越高.
ssl_ciphers HIGH:!aNULL:!MD5;
#在 SSLv3 或 TLSv1 握手过程一般使用客户端的首选算法,如果启用下面的配置,则会使用服务器端的首选算法.
ssl_prefer_server_ciphers on;
#储存SSL会话的缓存类型和大小
ssl_session_cache shared:SSL:10m;
#缓存有效期
ssl_session_timeout 5m;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
停止Nginx容器之后,重新启动:
docker container run \
--rm \
--name nginx \
--volume /etc/nginx/html:/usr/share/nginx/html \
--volume /etc/nginx:/etc/nginx \
--volume /etc/letsencrypt:/etc/letsencrypt \
-p 80:80 \
-p 443:443 \
-d \
nginx
第一次学习docker,过程比较菜,后续学习文章会进行改进。
参考:
最新评论
接口密码是什么呀?
牛仔
一直在用的,感谢更新
哎。之前听推荐的,但是现在要付费了,否则硬解等都受到限制。