Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Define ssl_certificate using $server_name
Hello!
On Tue, Oct 13, 2009 at 02:47:13AM +0400, Daniel Podolsky wrote:
> > В nginx'е есть поддержка SNI начиная с 0.5.23 (при условии сборки
> > с поддерживающей это версией openssl), работает совершенно
> > прозрачно с точки зрения конфигурации (начинает использоваться тот
> > сертификат, который указан в запрошенном клиентом блоке server).
> Не-не-не :) Я - подкованный парень. Я чисто про конфиг nginx - можно
> ли, описывая сервер, использовать переменные для задания директив?
А, не понял вопроса, sorry. In no particular order:
1. В ssl_certificate - нельзя, т.е. вообще. Он загружается на
этапе парсинга конфигарации, а переменные в nginx'е - времени
выполнения запроса.
2. Не нужно использовать переменные там, где они не могут/должны
принимать различные значения при обработке разных запросов. См.
выше, переменные в nginx'е - раскрываются для каждого запроса.
Если задача - сократить объём вводимого в конфиге, то решение -
это генератор конфигов (начиная от sed + make и заканчивая любой
другой конструкцией на вкус использующего).
А переменные - оставьте в покое, они нужны для другого. Там, где
они поддерживаются, об этом явно написано.
> Ну, вот еще пример:
>
> set $app_uri "/app/"
>
> server {
> listen 80;
> location $app_uri {
> rewrite ^ https://$host/$request_uri? redirect;
> }
> }
>
> server {
> listen 443;
> location $app_uri {
> proxy_pass http://127.0.0.1:8080;
> }
> }
И так - тоже нельзя, потому что дерево location'ов строится на
этапе парсинга конфигурации. И не нужно, по всё тем же причинам.
> Вопрос регулярно обсуждается, но ни вспомнить ответ, ни нагуглить не
> справляюсь :(
Регулярно приводимых ответов два: 1) тот что выше, и 2) "возможно
следует сделать макросы (== переменные времени парсинга конфига),
для тех кто не понял ответ выше".
Maxim Dounin
|