Apache rewrite/proxy
Som web-udvikler arbejder jeg med både Apache og IIS, og der er flere af de maskiner jeg anvender der har begge dele installeret. Da de ikke kan køre på samme port havner man i en situation hvor alle referencer til den ene af dem indeholder et grimt portnummer som i “www.example.com:8000″. Ikke blot ser det ikke pænt ud, men en browser som Internet Explorer får også sådan en adresse helt galt i halsen med mindre man sætter det endnu mindre pæne “http://” foran.
Jeg præsenterer her Apache, der via hele to forskellige moduler kan håndtere at tilgangen til begge servere sker gennem den traditionelle port 80. Intet avanceret, det er bare et simpelt trick der kan løse problemet i de fleste situationer.
Første løsning: rewrite
“Rewrite” modulet i Apache er vel nok et af de mest avancerede. Det kan bruges til mange ting, og kan virke temmelig uoverskueligt. Antag at der på maskinen kører en Apache på port 80 og en IIS på port 8000. Vi ønsker at give adgang til en del eller hele IIS’en gennem et underkatalog på Apache. Indsæt følgende i httpd.conf (under forudsætning af at der anvendes Virtual Hosts, eller springes de linier over):
LoadModule rewrite_module modules/mod_rewrite.so <VirtualHost *> ... RewriteEngine on RewriteRule ^/miniis/(.*) http://localhost:8000/$1 [P] </VirtualHost>
Så vil en adresse som “localhost/miniis/MyProject/default.asp” automatisk af Apache blive omskrevet til “http://localhost:8000/MyProject/default.asp” og videresendt internt til IIS’en.
Anden løsning: proxy
Løsningen ovenfor bruger internt et andet modul i Apache som hedder “proxy”. I visse situationer kan det bedre betale sig at bruge dette direkte, hvilket man f.eks. kunne gøre med følgende kode i httpd.conf:
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_http_module modules/mod_proxy_http.so <VirtualHost *> ... <Location /miniis/> ProxyPass http://localhost:8000/ ProxyPassReverse http://localhost:8000/ </Location> </VirtualHost>
Fordelen ved proxy løsningen er at den også ændrer evt. absolutte referencer til sig selv, som IIS’en sender tilbage som svar på forespørgslen. Det gør rewrite løsningen ikke, men til gengæld er der dér yderligere mulighed for at skrive om på URI’en.