Reverse proxy w IIS

Reverse proxy w IIS

  • Comments 3
  • Likes

Idea reverse proxy nie jest specjalnie skomplikowana. Mamy serwer, do którego trafiają zapytania ze świata, ten serwer odpytuje jakiś inny serwer http (serwer aplikacyjny) a otrzymaną odpowiedź przekazuje klientowi tak, jakby wygenerował ją sam. Po co tak kombinować? Powodów może być wiele, wśród których wymienić warto chociażby:

  • Serwery aplikacyjne nie muszą być "wystawione" do świata a reverse proxy zadba o odfiltrowanie niepożądanych zapytań. Sam IIS ma sporo ciekawych filtrów (włącznie z ModSecurity) a dalej przekazane zostaną tylko "grzeczne" zapytania.
  • Stosunkowo prosty reverse proxy może znajdować się u providera wyposażonego w łącza o potężnej przepustowości, dzięki czemu to na nim skupią się ataki DDoS. Wystarczy to połączyć z Dynamic IP Filtering (wbudowanym w ISS8, dodatkowym w starszych wersjach) i już mamy całkiem ładne zabezpieczenie a serwery aplikacyjne zostają u nas w firmie.
  • Informacja z wielu serwerów aplikacyjnych może być przedstawiana klientowi tak, jakby znajdowała się na jednym – adres dla klienta pozostaje ten sam i jest adresem reverse proxy.
  • Wystarczy jeden zewnętrzny adres IP i adres URL do pokazania światu zawartości dowolnej ilości serwerów aplikacyjnych. Również takich, które działają na jednym serwerze, ale na różnych portach TCP.
  • Za reverse proxy można "schować" szczegóły budowy rozwiązania. Adresy wystawione do świata mogą być ładne i przyjazne, podczas gdy serwer aplikacyjny w adresie URL wymaga podania danych, których nie chcemy pokazywać publicznie.
  • Reverse proxy pokazuje klientom swoją wersję, oprogramowanie, nagłówki i inne potencjalnie wrażliwe szczegóły.
  • Reverse proxy może (nie musi) buforować informacje otrzymane od serwerów aplikacyjnych, dzięki czemu zmniejsza ich obciążenie.
  • Na reverse proxy można przerzucić całą robotę związaną z obsługą SSL.

Podobnych powodów możnaby wymieniać wiele.

Jeżeli ktokolwiek chce to zrobić w swoim środowisku, może przebierać w rozwiązaniach. Od mniej lub bardziej zaawansowanych rozwiązań Open Source aż po specjalizowane urządzenia. Tymczasem, zupełnie dobrze reverse proxy można zbudować w oparciu o IIS. Potrzebne będą:

Warto wiedzieć, że wymienione powyżej moduły można instalować przez mechanizm Web Platform Installer (WebPI) – dzięki temu instalacja jest znacząco prostsza i przebiega bezproblemowo.

Po instalacji, na poziomie serwera należy włączyć funkcjonalność reverse proxy, opcjonalnie ustawiając parametry buforowania.

iisrev01

 

Na poziomie site’ów i folderów wirtualnych, w ramach modułu URL Rewrite trzeba skonfigurować inbound rules, służące do tłumaczenia zapytań przychodzących ze świata na zapytania do serwerów aplikacyjnych.

iisrev02

Oczywiście, reguły tłumaczenia zapytań są dość elastyczne (match, wildcard i regexp) i pozwalają na realizację całkiem zaawansowanych scenariuszy.

I gotowe! Warto pamiętać o jeszcze jednym module do IIS: Advanced Logging. Może się przydać, ponieważ serwer aplikacyjny dostaje zapytania od reverse proxy, przez co informacja w jego logach nie zawiera danych na temat faktycznie pytającego klienta. Pytającym jest przecież zawsze reverse proxy. Reverse proxy dodaje jednak kilka swoich specjalnych nagłówków, wśród których warto wymienić:

  • X-Forwarded-For – zawierający informację o tym, kto przysłał zapytanie do reverse proxy zanim ten przekazał je dalej
  • X-Original-URL – służący do przekazania zapytania w formie, którą miało zanim zostało przetłumaczone na postać służącą do przesłania do serwera aplikacyjnego.

Pozostaje odpowiedzieć sobie na dwa pytania: czy reverse proxy mi się przyda i czy znajdę cokolwiek lepszego i prostszego niż IIS. A potem po prostu działa.

Autor: Grzegorz Tworek [MVP]

Comments
  • Czy masz doświadczenia związane z tak skonfigurowanym proxy i udostęnianiem klientom Exchange przy użyciu RPC over https?

    Niestety dziwna implementacja tego w Exchange powoduje, że tylko niektóre reverse proxy sobie z tym radzą - opis problemu np. tutaj issues.apache.org/.../show_bug.cgi

  • To zupełnie nie mój temat, ale mądrzejsi ode mnie sugerują, żeby zajrzeć tutaj: pepugmaster.blogspot.com/.../application-request-routing-dla.html

  • Przy skonfigurowanym AAR występuje problem z RPC over HTTPS na Exchange 2k10 i 2k13 - z tego co wiem to nie ma obejścia problemu, Proponuję zaczekać na oficjalne stanowisko zespołu Exchange.

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment