Как можно проксировать только запросы на файлы определенных типов?
Пишу в конфиге
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