Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: nginx дублирует часть URI при проксировании COPY н а apache+svn
 
- To: "Konstantin M. Khankin" <nginx-ru@xxxxxxxxx>
 
- Subject: Re: nginx дублирует часть URI при проксировании COPY н а apache+svn
 
- From: Gena Makhomed <gmm@xxxxxxxxx>
 
- Date: Fri, 18 Sep 2009 20:02:11 +0300
 
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=csdoc.com; s=dkim;	t=1253293553; bh=pqC22QCJdExvFLzBbzktfUyq6Qo+r1IhpH73ErowI7Y=;	h=Date:From:X-Mailer:X-Priority:Message-ID:To:Subject:In-Reply-To:	 References:MIME-Version:Content-Type:Content-Transfer-Encoding;	b=X2a++p6vj7EebD9vj5tbQEiYVpfJLbEnXD3+ispKLxHJiEi5H/3vMvssWb+9KVhIH	KSIxdVLaGUucyydUDCTvxeDED03Lr9YHiZNqgGYZ0SePIwTRed0T11xs2dqyl8lUmI3	XY8zufqZAPKPqm3SA1m+pfvS/tYLm0VB5JgXWxs=
 
- In-reply-to: <E1Mofyv-0004Jj-00.homecreate-list-ru@xxxxxxxxxxxx>
 
- References: <E1Mofyv-0004Jj-00.homecreate-list-ru@xxxxxxxxxxxx>
 
 
 
On Friday, September 18, 2009 at 19:06:45, Konstantin M. Khankin wrote:
KMK> Построил следующую архитектуру:
KMK> client(ssl)---(ssl)nginx---apache---svn
KMK> Всё работает нормально, кроме svn move. При попытке выполнения этого 
запроса получаю 403
KMK> Перехватывал tcpdump'ом общение между nginx и apache -
KMK> обнаружил, что при отправке запроса на 
KMK> apache nginx удваивает первую часть URI (до первого /), что
KMK> приводит к невозможности выполнения 
KMK> некорректного запроса на apache. Дублирование происходит следующим образом:
/svn/tp -> /svn/svn/tp
существует (временный?) workaround: если вместо
location /svn {
        proxy_pass            http://v3.local/svn;
написать
location / {
        proxy_pass            http://v3.local/;
тогда всё работает нормально.
KMK> Конфиг nginx - http://paste.org.ru/?wf7hut
вот этот (вечный?) workaround для баги с полем Destination:
    set $dest $http_destination;
        if ($http_destination ~ "^https://se.item74.ru/(.+)") {
            set $dest http://se.item74.ru/$1;
        }
        proxy_set_header        Destination    $dest;
    }
можно переписать более универсальным способом, без имени хоста:
    set $fixed_destination $http_destination;
    if ( $http_destination ~* ^https(.*)$ )
    {
        set $fixed_destination http$1;
    }
    proxy_set_header Destination $fixed_destination;
-- 
Best regards,
 Gena
 
 |