Serwer proxy Apache VirtualHost z podkatalogiem

13

Obecnie mamy serwer IIS jako nasz główny serwer WWW. Wdrażamy serwer Apache na jego miejscu, ale nadal musimy mieć dostęp do serwera IIS. Zazwyczaj jest to prosta sprawa, ponieważ Apache2 może proxy subdomeny do tego serwera.

Nasz problem jest jednak następujący: używamy dotnetCharting na serwerze IIS, a licencjonowanie jest powiązane z nazwą domeny. Aby dotnetCharting działał, należy zakupić kolejną licencję.

Moje pytanie brzmi: czy serwer proxy Apache2 może zawierać podkatalog? Na przykład, czy „www.example.com/subdir” wskazuje na serwer IIS? Wydaje się, że nie powinno to być niemożliwe, ale nie mogę znaleźć rozwiązania tego problemu.

SuperJer
źródło

Odpowiedzi:

19

Pewnie. Ale bądź ostrożny; wiele aplikacji internetowych nie jest dobrze zaprojektowanych pod kątem zmiany ścieżki adresu URL. Czy aplikacja jest obecnie używana w podkatalogu?

# You'll probably want this to maintain the host mapping in IIS
ProxyPreserveHost On
# Swap in the IP address or internal host name of your IIS server:
ProxyPass /subdir/ http://192.0.2.100/subdir/

Lub, jeśli zmieniasz ścieżkę adresu URL, pamiętaj, że wiele aplikacji będzie miało z tym problemy, ze względu na bezwzględne ścieżki do zasobów (CSS, javascript, obrazy):

ProxyPass /subdir/ http://192.0.2.100/
ProxyPassReverse /subdir/ http://192.0.2.100/
Shane Madden
źródło
Doskonały! To sprawdziło się w moim środowisku testowym. W tej chwili wewnętrznie możesz wprowadzić adres IP serwera i użyć naszego wewnętrznego serwera proxy, aby dostać się na serwer, i wszystko (oprócz dotnetcharting) działa idealnie, więc nie oczekuję, że aplikacja ulegnie awarii, gdy przekażemy ją za pomocą tej metody. Bardzo mile widziane!
SuperJer
1
Musiałem zrezygnować z końcowego /z subdir(tak:) /subdir. W przeciwnym razie domain.com/subdirwystąpi błąd aplikacji (500). Byłby proxy poprawnie, gdyby ukośnik został dołączony ( domain.com/subdir/), ale nie tego szukałem.
OneHoopyFrood
2

Pewnie.

  1. Włącz mod_proxy mod_proxy_http
  2. ustaw następującą instrukcję w swoim Apache VHost

    ProxyPass /subdir http://iis.server/.../
    ProxyPassReverse /subdir http://iis.server/.../
    

Uwaga: końcowe „/” jest obowiązkowe.

Więcej informacji: http://httpd.apache.org/docs/2.2/mod/mod_proxy.html

NCH
źródło
0

ostatni ukośnik na końcu NIE jest obowiązkowy. Miałem taką konfigurację

ProxyPass /dir http://exmpale.com/dir/ 

ProxyPassReverse /dir http://exmpale.com/dir/ 

najwyższy poziom działał, ale nie działało wszystko w podkatalogach poniżej głównego.

Zmieniłem to na to i wszystko działało.

Dzięki za dezinformację !!!

ProxyPass /dir http://exmpale.com/dir

ProxyPassReverse /dir http://exmpale.com/dir
zirytowany maniak linux
źródło
1
Dlaczego ludzie głosują za tym? To był dokładnie problem, który miałem. Musisz albo zakończyć oba adresy URL ukośnikiem, albo zostawić oba adresy bez ukośnika .... przynajmniej dla mnie pomogło, jeśli chodzi o podkatalogi;)
Jannik