2008-10-09 29 views
11

Ekibim, bir müşterinin sitesinden web uygulamalarımızdan birine bir Apache ters proxy kurmaya çalışıyor.Apache - Ters Proxy ve HTTP 302 durum iletisi

http://www.example.com/app1/some-path biz dikmeleri kullanmak ve belirli işlevleri sağlamak amacıyla belirli işlemlere daha = true set yönlendirmesini uygulamamız İçinde http://internal1.example.com/some-path

eşleştiren. Bu yeniden yönlendirmelerden alınan 302 durum iletisi, kullanıcının son kullanıcı için bir hata sayfasına neden olarak proxy'den çıkmasına neden olur.

HTTP/1.1 302 Konum Bulunan: yönlendirmeler düzgün çalışacak biçimde http://internal.example.com/some-path/redirect

kurulum için herhangi bir şekilde apache ters vekil var mıdır?

http://www.example.com/app1/some-path/redirect

cevap

11

Sorununuzu giderecek şekilde görünen Running a Reverse Proxy in Apache başlıklı bir makale var. Hatta örneğinizde sahip olduğunuz aynı example.com ve/app1 kullanır. ProxyPassReverse'un nasıl kullanıldığıyla ilgili örnekler için "Proxy'yi Yapılandırma" bölümüne gidin.

1

ters vekil yerine AJP bağlayıcı kullanmayı deneyin. Kesinlikle önemsiz bir değişiklik değil, ama ters proxy yerine AJP kullanırken çok sayıda URL kabuslarının gittiğini fark ettim.

+0

http yönlendirmelerin AJP olmadan https proxy'yi geçmesini engellemek için güvenilir bir yol bulmaya çalışırken 3 saatimi harcadım. Bunu ProxyPass ve ProxyPassReverse direktiflerinde http yerine ajp kullanarak çözdüm. – Gnafu

2

AskApache article oldukça yararlıdır, ancak pratikte Rewrite kurallarının ve ProxyPassReverse'nin daha esnek olması için bir kombinasyon buldum. Böyle bir şey yapacağını senin durumunda böyle:

<VirtualHost example> 
     ServerName www.example.com 

     ProxyPassReverse /app1/some-path/ http://internal1.example.com/some-path/ 
     RewriteEngine On 
     RewriteRule /app1/(.*) http://internal1.example.com/some-path$1 [P] 

     ... 
    </VirtualHost> 

o size iç sunucu için proxy ediyoruz yolları üzerinde ince taneli kontrol sağlar çünkü bu daha çok sevdim. Bizim durumumuzda, üçüncü taraf uygulamasının sadece bir kısmını açığa çıkarmak istedik. Bu, AskApache makalesinin kapsadığı HTML'de kodlanmış bağlantılara değinmediğini unutmayın. Ayrıca

, birden ProxyPassReverse hatları var unutmayın:

ProxyPassReverse/http://internal1.example.com/some-path 
    ProxyPassReverse/http://internal2.example.com/some-path 

bu söz sadece çünkü biz kendi iç ana bilgisayar adını içermiyordu yönlendirmeleri dışarı gönderiyordu proxy edildi başka bir üçüncü taraf uygulama, sadece farklı bir liman. Son bir not olarak, yeniden yönlendirme hatalarını ayıklarken Firebug'un son derece yararlı olduğunu unutmayın.