"include" directive is not allowed here

Борис Долгов boris at dolgov.name
Sun Jan 25 20:30:24 MSK 2009


Попробуйте вынести inсlude на уровень server или http - все равно же файл
один для всех proxy_pass'ов?

25 января 2009 г. 20:20 пользователь Roman Hlynovskiy <
roman.hlynovskiy at gmail.com> написал:

> Добрый день,
>
> в данный момент существует вот такой конфиг который вполне успешно
> обрабатывает запросы к хосту и если есть какие-то несуществующие
> файлы, либо страшные редиректы через mod_rewrite на бэкенде, то nginx
> их ему скармливает.
>
> server {
>  server_name www.xxx.kz xxx.kz;
>  listen a.b.c.d:80;
>
>  log_not_found off;
>  access_log /usr/local/apache/domlogs/xxx.kz common buffer=32k;
>  access_log /usr/local/apache/domlogs/xxx.kz-bytes_log bytes_log buffer=4k;
>  error_log /var/log/nginx/error.log warn;
>
>  location ~*
> \.(gif|jpg|jpeg|png|bmp|ico|wmv|avi|mpg|mpeg|mp4|htm|html|js|css|swf|rar|zip|mp3)$
> {
>    root /home/fotoland/public_html;
>    error_page 404 = @apache;
>  }
>
>  location ~ /\.ht {
>    deny all;
>  }
>
>  location / {
>    proxy_pass http://localserver/;
>    include /etc/nginx/proxy_pass.conf;
>    proxy_redirect  http://www.xxx.kz:88 http://www.xxx.kz;
>    proxy_redirect  http://xxx.kz:88 http://xxx.kz;
>  }
>
>  location @apache {
>    proxy_pass http://localserver;
>    include /etc/nginx/proxy_pass.conf;
>    proxy_redirect  http://www.xxx.kz:88 http://www.xxx.kz;
>    proxy_redirect  http://xxx.kz:88 http://xxx.kz;
>  }
>
> }
>
> в поисках того чего-бы тут еще оптимизировать конфиг был переписан вот
> к такому виду:
>
> server {
>  server_name www.xxx.kz xxx.kz;
>  listen a.b.c.d:80;
>
>  log_not_found off;
>  access_log /usr/local/apache/domlogs/xxx.kz common buffer=32k;
>  access_log /usr/local/apache/domlogs/xxx.kz-bytes_log bytes_log buffer=4k;
>  error_log /var/log/nginx/error.log warn;
>
>  location ~*
> \.(gif|jpg|jpeg|png|bmp|ico|wmv|avi|mpg|mpeg|mp4|htm|html|js|css|swf|rar|zip|mp3)$
> {
>    if (!-f $request_filename) {
>     break;
>     proxy_pass http://localserver;
>     include /etc/nginx/proxy_pass.conf;
>     proxy_redirect  http://www.xxx.kz:88 http://www.xxx.kz;
>     proxy_redirect  http://xxx.kz:88 http://xxx.kz;
>    }
>    root /home/fotoland/public_html;
>  }
>
>  location ~ /\.ht {
>    deny all;
>  }
>
>  location / {
>    proxy_pass http://localserver/;
>    include /etc/nginx/proxy_pass.conf;
>    proxy_redirect  http://www.xxx.kz:88 http://www.xxx.kz;
>    proxy_redirect  http://xxx.kz:88 http://xxx.kz;
>  }
>
> }
>
> моя логика была такой - если самому проверять есть-ли файл или нет и
> если нет сразу отдавать запрос бэкенду, то это будет немножечко
> быстрее чем если ждать когда процесс-обработчик nginx-а сам это
> проверит, отдаст 404, потом отловить этот 404 и отдать все это
> бэкенду.
>
> но тут столкнулся с тем, что nginx не хочет в этом if-е обрабатывать
> этот include. сам include содержит набор стандартным директив для
> проксирования на бэкенд с именами хедеров и проч. атрибутами модуля
> proxy.
>
> у меня есть 2 вопроса:
> 1) прав-ли я в своей логике, что такая схема будет отрабатывать чуть
> быстрее
> 2) если прав как nginx заставить делать то что хочу?
>
> --
> ...WBR, Roman Hlynovskiy
>



-- 
С уважением, Борис Долгов.
icq 77556665
e-mail boris at dolgov.name
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20090125/fe6bcef4/attachment.html>


More information about the nginx-ru mailing list