Re: rewrite в именованный location

Peter A Leonov gojpeg at gmail.com
Thu Jul 30 20:38:20 MSD 2009


Заюзать use мне бы тоже очень хотелось. А то кроме инклюда и нет  
больше оружия против копипаста :(


С уважением,
Петр Леонов.
+7 (905) 758-12-73

On 30.07.2009, at 19:50, Gena Makhomed <gmm at csdoc.com> wrote:

> On Thursday, July 30, 2009 at 14:37:39, Борис Долгов wrote:
>
> БД> Мне кажется, можно даже ввести что-то типа
>
> БД> http {
> БД>     configuration x {
> БД>         fastcgi_pass ....
> БД>         прочее;
> БД>     }
> БД>     server {
> БД>         location @php {
> БД>             use x;
> БД>         }
> БД>         location ~\.php$ {
> БД>             use x;
> БД>         }
> БД>     }
> БД> }
>
> БД> которые все будут храниться в памяти только 1 раз.
>
> по сути это аналог директивы include, только вместо того,
> чтобы делать много мелких файлов для include, можно будет
> сделать именованные фрагменты конфигурации в одном файле.
>
> например:
>
> http {
>
>    config http_backend {
>        proxy_set_header  Host $host;
>        proxy_set_header  X-Real-IP $remote_addr;
>        proxy_set_header  X-Nginx-Scheme $scheme;
>        proxy_pass http://127.0.0.1/;
>    }
>
>    config fastcgi_backend {
>        ...
>    }
>
>    server {
>        server_name www.example.com;
>        location / {
>            use http_backend;
>        }
>    }
>
>    server {
>        server_name www.example.net;
>        location / {
>            use fastcgi_backend;
>        }
>    }
> }
>
> если в различных виртуальных серверах nginx
> есть одинаковые фрагменты конфига, например,
> отдача статических файлов или контролируемые
> скачивания - это тоже кандидаты на config { }
>
> аналогично, через один блок config { }
> можно было бы описать общие фрагменты
> конфигурации для http и https-серверов,
> при внесении изменений - надо будет
> править конфиг только в одном месте.
>
> DRY principle - Don't repeat yourself.
>
> PS параметр "ssl" в директиве "listen"
> можно использовать только для полностью
> идентичных конфигураций. например, если
> для location /admin/ у https сервера
> нужен один конфиг, а у http сервера -
> редирект на https, тогда придется делать
> два полностью отдельных конфига server { },
> или использовать внутри if, что еще хуже,
> или несколько файлов и использовать include,
> что становится еще более неудобным при большом
> количестве виртуальных хостов на сервере.
> удобнее было бы 1 хост == 1 файл конфига,
> и include /etc/nginx/conf/virtual/*.conf;
>
> -- 
> Best regards,
> Gena
>
>





More information about the nginx-ru mailing list