前言:
????默認安裝tenginx 后激涤,由于 nginx -V 命令中缺乏--with-http_ssl_module 導致栏尚。通常會建議安裝時加上參數(shù)重新編譯解決胚迫。?
本題為了避免重新編譯亥曹,通過shell腳本欺騙 certbot 實現(xiàn)HTTPS證書簽發(fā)。
原理:
????certbot通過python命令執(zhí)行 nginx -c /etc/nginx/nginx.conf -t? 索守,并獲取錯誤輸出通道的記錄。正則判斷是否存在字符串 “?--with-http_ssl_module ”?
解決辦法:
????1.通過which nginx 查找nginx可執(zhí)行文件位置抑片。
????2.將此文件改名如 mv /bin/nginx? /bin/nginx_app?
????3./bin/nginx替換成shell腳本 卵佛,并增加可執(zhí)行權限 chmod +x?/bin/nginx
????4. 執(zhí)行證書簽發(fā)流程?certbot --nginx
解決腳本:
#!/bin/bash
arg=$@
echo "${arg}" | grep '\-V'
if [ $? -eq 0 ] ;then
? /usr/local/nginx/sbin/nginx $@
? echo ' --with-http_ssl_module ' >&2
else /usr/local/nginx/sbin/nginx $@
fi