网站首页 > 精选教程 正文
Docker 内部署的 Nginx,结合免费的SSL Let's Encrypt 部署 HTTPS,自动更新证书有效期,给你的浏览器地址栏加个绿色的锁,让你的站点更加安全。
镜像
docker pull certbot
配置
注:修改 nginx 配置,在 server 模块下新增如上配置,注意路径变更,且该路径为 docker 下的路径。
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
root /www/makeit;
}
location = /.well-known/acme-challenge/ {
return 404;
}
运行
注:这里采用 webroot 验证方式,--webroot -w 所配置的参数为 docker 下的目录。
docker run -it --rm --name certbot \
-v /makeit/docker/nginx/letsencrypt:/etc/letsencrypt \
-v /var/lib/letsencrypt:/var/lib/letsencrypt \
-v /makeit/web/home:/www/makeit \
certbot/certbot certonly --webroot -w /www/makeit \
--email makeit@makeit.vip \
-d www.makeit.vip
有效期
# 可根据如下命令查看证书有效时长
# -in 后面为刚刚生成时存放的证书路径
openssl x509 -noout -dates -in /makeit/docker/nginx/letsencrypt/live/www.makeit.vip/cert.pem
自动更新
新建脚本
touch renew.sh
脚本内容
#!/bin/bash
docker run -it --rm --name certbot \
-v /makeit/docker/nginx/letsencrypt:/etc/letsencrypt \
-v /var/lib/letsencrypt:/var/lib/letsencrypt \
-v /makeit/web/home:/www/home \
certbot/certbot certonly --webroot -w /www/home \
--force-renew \
--email makeit@makeit.vip \
-d www.makeit.vip
docker kill nginx
docker start nginx
修改权限
chmod +x /makeit/docker/nginx/renew.sh
定时任务(每月1号执行1次脚本)
crontab -e
0 0 1 * * /makeit/docker/nginx/renew.sh
PFS键值
PFS(perfect forward secrecy),中文可叫做完全前向保密。要求一个密钥只能访问由它所保护的数据;用来产生密钥的元素一次一换,不能再产生其他的密钥;一个密钥被破解,并不影响其他密钥的安全性
mkdir /makeit/docker/nginx/ssl/private -p
cd /makeit/docker/nginx/ssl/private
openssl dhparam 2048 -out dhparam.pem
配置示例
server {
listen 80;
listen 443 ssl;
server_name makeit.vip www.makeit.vip;
root /www/makeit;
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log warn;
ssl_certificate letsencrypt/live/www.makeit.vip/fullchain.pem;
ssl_certificate_key letsencrypt/live/www.makeit.vip/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
ssl_session_timeout 5m;
ssl_session_tickets on;
ssl_dhparam ssl/private/dhparam.pem;
location / {
index index.html index.htm index.php index.jsp;
}
error_page 500 502 503 504 /50x.html;
location /50x.html {
root /www;
}
location ~ /\. {
return 403;
}
location ~* ^.+\.(jpg|jpeg|gif|png|bmp|css|js|swf)$ {
access_log off;
}
location ~ \.php$ {
root /www/makeit;
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
NGINX
注:后3个 -v 映射的目录,请都映射在 nginx 容器的根目录下。
docker run \
--name nginx \
-d -p 80:80 -p 443:443 --restart=always \
-v /makeit/web:/www \
-v /makeit/logs/nginx:/var/log/nginx \
-v /makeit/docker/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
-v /makeit/docker/nginx/conf.d:/etc/nginx/conf.d \
-v /makeit/docker/nginx/letsencrypt:/etc/nginx/letsencrypt \
-v /makeit/docker/nginx/ssl:/etc/nginx/ssl \
--link php nginx
查看效果
证书已经生效,浏览器已经加了“锁”标识,成功啦 ~
猜你喜欢
- 2024-10-21 Prometheus启用TLS prometheus tidb
- 2024-10-21 网络存储文件共享之WebDAV 设置web共享
- 2024-10-21 pem,pfx,cer这三种类型的证书有什么区别?
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)