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