Здравствуйте, Андрей. Вы писали 24 мая 2013 г., 10:09:18: > Быть может я не прав, но возможна такая конструкция: > location <> { > rewrite <1> <2>; > proxy_pass <url>; > } Возвращаю в тред. Нет, так не работает. Объясню почему. Приведем к более конкретному виду в этот конфиг: location /test { rewrite $a $b; # - или что Вам больше нравится, сути нет proxy_pass @url; } Делаем запрос: /test/$blablabla. Попадаем в указанный location. При наличии совпадения в $blablabla как $a запрос на @url будет передан в виде получившегося изменения части $blablabla реврайтом $b; в противном случае передано будет $blablabla. Обратите внимание, что изменен буде ЗАПРОС отправленный на @url!!!! Этот @url например нам отвечает: <html> ... <img src="/image.png" /> ... </html> Браузер когда увидит такую конструкцию спросит сервер /image.png. Но вот в чем проблема - реально этот файл находится на @url и правильно к нему обращаться /test/image.png!!! В nginx же обработка корня задана своим location и потому подобный запрос уже никогда не попадет на @url. Родилась идея конечно сделать через try, но! при наличии нескольких одинаковых файлов в разных location (а так будет 100% - к примеру все называют на серверах /style.css или /css/style.css - и т.п.) будут подключаться не те файлы! потому идеальным выходом из сложившейся ситуации служит обработка ответа от @url до его выдачи клиенту! и интелектуальная замена в выводе <img src="/image.png" /> на <img src="/test/image.png" />. Но существует ли подобное решение и как его сделать - я не нашел в гугле, потому и спрашиваю у более опытных. Сам с подобной задачей столкнулся впервые. Раньше настраивал nginx либо как отдельный веб-сервер, либо как фронт-энд к апачу.
Attachment:
pgpAWvUf_rquE.pgp
Description: PGP signature