ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Передача оригинальног о URI в SSI


  • To: nginx-ru@xxxxxxxxx
  • Subject: Передача оригинальног о URI в SSI
  • From: Alex Tutubalin <lexa@xxxxxxx>
  • Date: Sat, 12 May 2007 22:59:06 +0400

Привет,

честно искал поиском на своем же сайте - не нашел.

Вот есть такая вот конфигурация:
 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@xxxxxxx
Web: http://www.lexa.ru/lexa 






 




Copyright © Lexa Software, 1996-2009.