Я пытаюсь создать маршрутизатор для внутреннего тестирования. Я использую образ openresty 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
включена во все образы, кроме alpine и windows. Это как-то относится к моему вопросу?
Если простое добавление параметров конфигурации не сработает, какой вариант вы считаете лучшим?
- Использование nginx-ssl-variables выглядит так, как будто оно делает именно то, что нам нужно: https://github.com/Seb35/nginx-ssl-variables
- Измените код openresty, чтобы создать собственный образ, улучшающий модуль ngx.ocsp, чтобы сделать сертификат доступным как
ngx.var.ssl_client_raw_cert in rewrite_by_lua_block
. - Измените код openresty, чтобы создать собственный образ, перезаписывающий рукопожатие SSL.
- Некоторая комбинация вышеперечисленного
- Другой?