Попробуйте вынести inсlude на уровень server или http - все равно же файл один для всех proxy_pass'ов?<br><br><div class="gmail_quote">25 января 2009 г. 20:20 пользователь Roman Hlynovskiy <span dir="ltr"><<a href="mailto:roman.hlynovskiy@gmail.com">roman.hlynovskiy@gmail.com</a>></span> написал:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Добрый день,<br>
<br>
в данный момент существует вот такой конфиг который вполне успешно<br>
обрабатывает запросы к хосту и если есть какие-то несуществующие<br>
файлы, либо страшные редиректы через mod_rewrite на бэкенде, то nginx<br>
их ему скармливает.<br>
<br>
server {<br>
server_name <a href="http://www.xxx.kz" target="_blank">www.xxx.kz</a> <a href="http://xxx.kz" target="_blank">xxx.kz</a>;<br>
listen a.b.c.d:80;<br>
<br>
log_not_found off;<br>
access_log /usr/local/apache/domlogs/<a href="http://xxx.kz" target="_blank">xxx.kz</a> common buffer=32k;<br>
access_log /usr/local/apache/domlogs/xxx.kz-bytes_log bytes_log buffer=4k;<br>
error_log /var/log/nginx/error.log warn;<br>
<br>
location ~* \.(gif|jpg|jpeg|png|bmp|ico|wmv|avi|mpg|mpeg|mp4|htm|html|js|css|swf|rar|zip|mp3)$<br>
{<br>
root /home/fotoland/public_html;<br>
error_page 404 = @apache;<br>
}<br>
<br>
location ~ /\.ht {<br>
deny all;<br>
}<br>
<br>
location / {<br>
proxy_pass <a href="http://localserver/" target="_blank">http://localserver/</a>;<br>
include /etc/nginx/proxy_pass.conf;<br>
proxy_redirect <a href="http://www.xxx.kz:88" target="_blank">http://www.xxx.kz:88</a> <a href="http://www.xxx.kz" target="_blank">http://www.xxx.kz</a>;<br>
proxy_redirect <a href="http://xxx.kz:88" target="_blank">http://xxx.kz:88</a> <a href="http://xxx.kz" target="_blank">http://xxx.kz</a>;<br>
}<br>
<br>
location @apache {<br>
proxy_pass <a href="http://localserver" target="_blank">http://localserver</a>;<br>
include /etc/nginx/proxy_pass.conf;<br>
proxy_redirect <a href="http://www.xxx.kz:88" target="_blank">http://www.xxx.kz:88</a> <a href="http://www.xxx.kz" target="_blank">http://www.xxx.kz</a>;<br>
proxy_redirect <a href="http://xxx.kz:88" target="_blank">http://xxx.kz:88</a> <a href="http://xxx.kz" target="_blank">http://xxx.kz</a>;<br>
}<br>
<br>
}<br>
<br>
в поисках того чего-бы тут еще оптимизировать конфиг был переписан вот<br>
к такому виду:<br>
<br>
server {<br>
server_name <a href="http://www.xxx.kz" target="_blank">www.xxx.kz</a> <a href="http://xxx.kz" target="_blank">xxx.kz</a>;<br>
listen a.b.c.d:80;<br>
<br>
log_not_found off;<br>
access_log /usr/local/apache/domlogs/<a href="http://xxx.kz" target="_blank">xxx.kz</a> common buffer=32k;<br>
access_log /usr/local/apache/domlogs/xxx.kz-bytes_log bytes_log buffer=4k;<br>
error_log /var/log/nginx/error.log warn;<br>
<br>
location ~* \.(gif|jpg|jpeg|png|bmp|ico|wmv|avi|mpg|mpeg|mp4|htm|html|js|css|swf|rar|zip|mp3)$<br>
{<br>
if (!-f $request_filename) {<br>
break;<br>
proxy_pass <a href="http://localserver" target="_blank">http://localserver</a>;<br>
include /etc/nginx/proxy_pass.conf;<br>
proxy_redirect <a href="http://www.xxx.kz:88" target="_blank">http://www.xxx.kz:88</a> <a href="http://www.xxx.kz" target="_blank">http://www.xxx.kz</a>;<br>
proxy_redirect <a href="http://xxx.kz:88" target="_blank">http://xxx.kz:88</a> <a href="http://xxx.kz" target="_blank">http://xxx.kz</a>;<br>
}<br>
root /home/fotoland/public_html;<br>
}<br>
<br>
location ~ /\.ht {<br>
deny all;<br>
}<br>
<br>
location / {<br>
proxy_pass <a href="http://localserver/" target="_blank">http://localserver/</a>;<br>
include /etc/nginx/proxy_pass.conf;<br>
proxy_redirect <a href="http://www.xxx.kz:88" target="_blank">http://www.xxx.kz:88</a> <a href="http://www.xxx.kz" target="_blank">http://www.xxx.kz</a>;<br>
proxy_redirect <a href="http://xxx.kz:88" target="_blank">http://xxx.kz:88</a> <a href="http://xxx.kz" target="_blank">http://xxx.kz</a>;<br>
}<br>
<br>
}<br>
<br>
моя логика была такой - если самому проверять есть-ли файл или нет и<br>
если нет сразу отдавать запрос бэкенду, то это будет немножечко<br>
быстрее чем если ждать когда процесс-обработчик nginx-а сам это<br>
проверит, отдаст 404, потом отловить этот 404 и отдать все это<br>
бэкенду.<br>
<br>
но тут столкнулся с тем, что nginx не хочет в этом if-е обрабатывать<br>
этот include. сам include содержит набор стандартным директив для<br>
проксирования на бэкенд с именами хедеров и проч. атрибутами модуля<br>
proxy.<br>
<br>
у меня есть 2 вопроса:<br>
1) прав-ли я в своей логике, что такая схема будет отрабатывать чуть быстрее<br>
2) если прав как nginx заставить делать то что хочу?<br>
<font color="#888888"><br>
--<br>
...WBR, Roman Hlynovskiy<br>
</font></blockquote></div><br><br clear="all"><br>-- <br>С уважением, Борис Долгов.<br>icq 77556665<br>e-mail <a href="mailto:boris@dolgov.name">boris@dolgov.name</a><br>