location ~ and proxy_pass

Igor Sysoev is at rambler-co.ru
Wed Mar 9 19:12:22 MSK 2005


On Tue, 8 Mar 2005, Anton V. Yuzhaninov wrote:

> Как можно проксировать только запросы на файлы определенных типов?
>
> Пишу в конфиге
>
>        location ~ ^.+\.(php|pl|cgi|shtml)$ {
>            proxy_pass  http://127.0.0.1/;
>            proxy_preserve_host        on;
>            proxy_set_x_real_ip        on;
>
>            client_max_body_size       10m;
>            client_body_buffer_size    128k;
>
>            proxy_connect_timeout      90;
>            proxy_read_timeout         90;
>            proxy_send_timeout         90;
>            proxy_send_lowat           12000;
>
>            proxy_header_buffer_size   4k;
>            proxy_buffers              8 32k;
>            proxy_busy_buffers_size    64k;
>
>            proxy_temp_file_write_size 2048k;
>            proxy_temp_path            /tmp;
>        }
>
> Запрашиваю в браузере любой файл *.php и вижу в error.log
>
> 2005/03/07 18:21:22 [alert] 93066#0: worker process 93384 exited on signal 10
>
> Если посылать GET телнетом, то соединение рвется сразу после отправки
> запроса. К бэкенду он даже не пытается коннектиться...
>
> Если делать наоборот - проксировать все, а через nginx отдавать только
> файлы определенных типов то работает.

proxy_pass не работает для location, заданных регулярным выражением.

В общем случае есть два способа отображения uri на файловую систему/другой
сервер - root и alias. root добавляет uri к root, а alias заменяет часть
uri, соответствующую location, на alias. proxy_pass - это alias-отображение,
а fastcgi_pass - root-отображение. alias вообще гибче, но нужно больше
писать. В случае использования регулярного выражения для alias-отображения 
нужно как-то выделять заменяемую часть. В принципе, можно сделать, чтобы
при использовании регулярного выражения proxy_pass приобретало характер
root-отображения.


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list