Передача оригинального URI в SSI
Alex Tutubalin
lexa at lexa.ru
Sat May 12 22:59:06 MSD 2007
Привет,
честно искал поиском на своем же сайте - не нашел.
Вот есть такая вот конфигурация:
location / {
ssi on;
proxy_pass backend;
}
На backend сайтик весь из себя на перле, понадобилось включить туда PHP-шного
кода (чужого!) жутко не хочется его переписывать самому на perl, хочется
готового.
backend выдает теперь:
... <!--#include virtual="/inc.php" -->
Каковой inc.php берется, вестимо, с backend
Но этому самому inc.php нужно знать куда его включили. REQUEST_URI, естественно,
равен http://backend/inc.php
Ладно, пишем так:
location /inc.php {
rewrite /inc.php /inc.php?uri=$request_uri;
proxy_pass backend;
}
(ну и, естественно, хачим inc.php, чтобы он брал URL из $_GET['uri'])
Для простых запросов - работает. Для запросов с аргументами - нет,
ибо рерайтится все в /inc.php?uri=/my/page?aa=bb&cc=dd
Другими словами, нужен либо адвайс (уверен, что я не первый хожу по этим
граблям), либо просто переменная вроде $escaped_uri
Я, естественно, могу написать perl_set $var 'sub ...', но что-то очень
не хочется. Этот бутерброд периодически приходится поддерживать,
а скотчем я не торгую.
Рерайтить в /inc.php/$request_uri и использовать extra-path я тоже
умею, но по тем же причинам нерегулярной поддержки (в это место залезают
дай б-г раз в год) тоже не хочу.
Алексей Тутубалин
mailto: lexa at lexa.ru
Web: http://www.lexa.ru/lexa
More information about the nginx-ru
mailing list