Nginx ?? with Auto SSL
描述(Desc)
這是一個(gè)可以自動(dòng)申請(qǐng)(并自動(dòng)更新)免費(fèi)ssl證書(shū)的nginx鏡像乾吻。證書(shū)申請(qǐng)和更新使用的是開(kāi)源工具acme.sh。
你可以設(shè)置證書(shū)服務(wù)商:zerossl, letsencrypt褒脯,buypass,ssl等等仪壮,或是地址憨颠,如Letsencrypt測(cè)試地址:https://acme-staging-v02.api.letsencrypt.org/directory
This is a Nginx image with auto ssl,use acme.sh积锅, you can set default-ca,like: zerossl, letsencrypt爽彤,buypass,ssl …
當(dāng)然缚陷,你也可以把它當(dāng)普通的nginx鏡像使用适篙。當(dāng)入?yún)OMAINS為空(-e DOMAINS=“” 或 不填),不會(huì)啟動(dòng)證書(shū)acme(證書(shū)獲取程序)箫爷。
Openresty鏡像github地址
https://github.com/xiaojun207/docker-openresty
Nginx鏡像github地址
https://github.com/xiaojun207/docker-nginx
快速啟動(dòng)(Quick Start)
docker pull? xiaojun207/nginx:latest
使用例子嚷节,如下(eg.):
docker run -d -p 80:80 -p 443:443 -v "/data/web":/data/web \
-v "/data/mynginx/nginx/ssl":/etc/nginx/ssl \
-v "/data/mynginx/nginx/conf.d":/etc/nginx/conf.d \
-v "/data/mynginx/acme_cert":/acme_cert \
-e SslDomains="example.com;www.example.com;test.example.com;test2.example.com" \
-e SslServer="zerossl" \
-e mail="youmail@example.com" \
--name nginx xiaojun207/nginx:latest
注意:
1、建議把路徑/etc/nginx/ssl虎锚、/acme_cert中的內(nèi)容都持久化到宿主機(jī)保存硫痰,避免容器刪除后,啟動(dòng)后會(huì)自動(dòng)再次獲却芑ぁ(頻繁申請(qǐng)證書(shū)會(huì)被服務(wù)商限制)效斑。
2、不要改變nginx.conf的路徑柱徙,否則證書(shū)生成會(huì)失敗缓屠。
3、測(cè)試部署時(shí)护侮,建議使用letsencrypt的測(cè)試地址(即參數(shù)敌完,-e SslServer=“https://acme-staging-v02.api.letsencrypt.org/directory”)。
使用說(shuō)明
默認(rèn)情況下, 使用的是服務(wù)器驗(yàn)證方式(非dns方式)羊初,所以請(qǐng)確保滨溉,需要申請(qǐng)證書(shū)的域名http端口可以正常訪問(wèn)(本nginx啟動(dòng)的http端口)。
參數(shù)說(shuō)明
參數(shù)是否必填說(shuō)明
SslDomains 必填 需要獲取參數(shù)ssl的域名列表。多個(gè)域名間以英文分號(hào)分隔(即:; )业踏。如果為空或不填禽炬,這就是個(gè)普通的nginx鏡像,哈哈勤家。
mail 必填 你的郵箱腹尖,用于獲取ssl時(shí)配置,有的證書(shū)服務(wù)商有網(wǎng)頁(yè)管理端伐脖,可以根據(jù)郵箱查看相關(guān)的證書(shū)热幔。如果為空可能會(huì)導(dǎo)致注冊(cè)到證書(shū)服務(wù)商失敗,因此如果參數(shù)為空會(huì)使用默認(rèn)郵箱讼庇。
SslServer 否 證書(shū)服務(wù)商(名字或地址)绎巨,默認(rèn):zerossl,你還可以使用:letsencrypt蠕啄,buypass场勤,ssl等等,或者letsencrypt的測(cè)試地址:https://acme-staging-v02.api.letsencrypt.org/directory
dns 否 域名是否采用dns驗(yàn)證歼跟,可選參數(shù)為:空格和媳,dns_ali,dns_aws哈街,dns_cf留瞳,dns_dp,骚秦,她倘。。作箍。更多參數(shù)請(qǐng)查看:https://github.com/acmesh-official/acme.sh/wiki/dnsapi例如1: -e dns=" ", 空格時(shí)硬梁,請(qǐng)查看控制臺(tái)日志中的dns記錄,并手動(dòng)為域名添加解析胞得;例如2: -e dns=“dns_ali” -e Ali_Key=“sdfsdfsdfljlbjkljlkjsdfoiwje” -e Ali_Secret=“jlsdflanljkljlfdsaklkjflsa” 使用云廠商api荧止,請(qǐng)?zhí)砑訉?duì)應(yīng)的key、secret等"添加域名解析"授權(quán)參數(shù)
證書(shū)路徑和nginx配置方法
容器啟動(dòng)懒震,會(huì)創(chuàng)建一個(gè)默認(rèn)證書(shū),避免nginx啟動(dòng)失敗嗤详。 證書(shū)獲取成功后个扰,將會(huì)被安裝到固定路徑:/etc/nginx/ssl/
nginx配置方法如下:
? ? server {
? ? ? ? # 80端口必須可以正常訪問(wèn),用來(lái)驗(yàn)證你的域名
? ? ? ? listen? ? ? 80;
? ? ? ? server_name example.com;
? ? ? ? # ...
? ? }
? ? server {
? ? ? ? listen? ? ? 443 ssl;
? ? ? ? server_name example.com;
? ? ? ? root /data/web/www;
? ? ? ? ssl_stapling off;
? ? ? ? ssl_certificate /etc/nginx/ssl/fullchain.pem; # 證書(shū)自動(dòng)安裝的路徑
? ? ? ? ssl_certificate_key /etc/nginx/ssl/key.pem; # 證書(shū)自動(dòng)安裝的路徑
? ? ? ? # ...
? ? }
證書(shū)更新
證書(shū)會(huì)定期檢查是否快要過(guò)期葱色,如果快要過(guò)期递宅,會(huì)自動(dòng)更新并安裝證書(shū),你可以高枕無(wú)憂了(理論上的,我的證書(shū)還沒(méi)到期办龄,哈哈)烘绽。