Передача оригинального 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