lua-resty-auto-ssl 教程
1. 项目介绍
lua-resty-auto-ssl
是一个用于OpenResty的插件,它能够自动化地注册和更新免费的SSL证书,这些证书由Let's Encrypt提供。这个插件的工作原理是在接收到请求时,如果系统已经有了对应域名的SSL证书,就会立即返回;如果没有,它将会向Let's Encrypt发起新的证书申请并完成验证过程。这样确保了你的站点可以持续提供安全的HTTPS服务。
2. 项目快速启动
安装前提
首先,确保你的环境已经安装了 OpenResty
和 Luarocks
。如果没有,请参照以下步骤:
# 安装OpenResty
curl -so /etc/yum/repos.d/openresty.repo https://openresty.org/package/centos/openresty.repo
yum install -y openresty gcc make diffutils openssl
# 安装Luarocks
mkdir /root/package && cd /root/package
wget http://luarocks.github.io/luarocks/releases/luarocks-3.3.1.tar.gz
tar zxf luarocks-3.3.1.tar.gz
cd luarocks-3.3.1/
./configure --prefix=/usr/local/openresty/luajit/ \
--with-lua=/usr/local/openresty/luajit/ \
make && make install
安装lua-resty-auto-ssl
使用Luarocks安装lua-resty-auto-ssl及其依赖:
/luarocks install lua-resty-auto-ssl
配置OpenResty
编辑 nginx.conf
并添加以下配置片段:
http {
# ...
server {
listen 80;
server_name example.com;
location /.well-known/acme-challenge/ {
content_by_lua_block {
local auto_ssl = require "resty.auto-ssl"
auto_ssl:set("http_server", { ctx = ngx.ctx })
}
}
ssl_certificate_by_lua_block {
local auto_ssl = require "resty.auto-ssl"
auto_ssl:enable_for_domain()
}
}
lua_shared_dict auto_ssl_storage 512m;
}
重启OpenResty以应用新配置:
systemctl restart openresty
3. 应用案例和最佳实践
- 自动更新证书:lua-resty-auto-ssl会在证书即将过期前自动进行更新。
- 多域名支持:通过
set
方法设置多个server_name,可以处理多个域名的SSL证书。 - 安全策略:结合HTTP到HTTPS的强制重定向,确保所有流量都在加密通道中传输。
4. 典型生态项目
- lua-resty-http: 提供了HTTP客户端功能,lua-resty-auto-ssl用其发送验证请求。
- shell-games: 实现了shell命令执行功能,用于系统调用来完成证书相关的操作。
本文简要介绍了lua-resty-auto-ssl的基本使用,更多详细信息及配置选项,请参考项目官方文档。