我正在尝试为内部测试创建一个路由器。我正在使用openresty image RESTY_CONFIG_OPTIONS_MORE。由于我们从客户端发送的消息是二进制的,并且没有任何请求标头,所以我们试图从证书中提取颁发者和序列号,并将它们设置为请求头。我们希望使用这些头来路由到我们的测试服务器,而不是生产,这取决于头值。
我的dockerfile是这样抓取的:
ENV RESTY_CONFIG_OPTIONS_MORE "--with-ngx_http_ssl_module"
我已经在服务器块中尝试了以下内容,但没有工作:
rewrite_by_lua_block {
ngx.req.set_header("x-issuer", ngx.var.ssl_client_i_dn)
}
作者提到,除了高山和窗口之外,所有图像中都包括envsubst
实用程序。这与我的问题有任何关系吗?
如果只是附加配置选项将不能工作,您认为哪一个是最好的选择?
ngx.var.ssl_client_raw_cert in rewrite_by_lua_block
使用发布于 2018-05-25 09:04:30
默认情况下,ngx_http_ssl_module安装在正式的OpenResty码头映像中。你不需要关心RESTY_CONFIG_OPTIONS_MORE。
海事组织最好的解决方案是使用nginx变量作为参考实现并设置所需的变量,例如:
set_by_lua_block $ssl_client_issuer {
if ngx.var.https == "on" then
return require("openssl").x509.read(ngx.var.ssl_client_raw_cert):issuer():oneline()
end
return nil
}
您需要安装lua-openssl。要安装该模块,最简单的方法是将其包含到您的Dockerfile中(从使用滑轮支架生成的映像构建):
RUN luarocks install openssl --server=https://rocks.moonscript.org/dev
https://stackoverflow.com/questions/50477607
复制相似问题