ReverseProxy for IIS 6.0 in CS using ASP.NET: Difference between revisions

From
Jump to navigation Jump to search
Content deleted Content added
Wolfm (talk | contribs)
Wolfm (talk | contribs)
Line 28: Line 28:
> break;
> break;
> }</nowiki></pre>
> }</nowiki></pre>
Then redirections which usally occur if you enterXP.g. <code><nowiki>http://foo/dir -> http://foo/dir/</nowiki></code> are forwarded to the browser as <code><nowiki>http://sar.informatik.hu-berlin.de/test -> http://sar.informatik.hu-berlin.de/test/</nowiki></code>
Then redirections which usally occur if you enterXP.g. <code><nowiki>http://foo/dir -> http://foo/dir/</nowiki></code> are forwarded to the browser as <code><nowiki>http://sar.informatik.hu-berlin.de/test -> http://sar.informatik.hu-berlin.de/test/</nowiki></code>.


== Installation ==
== Installation ==

Revision as of 07:21, 12 May 2006

Problem to solve

We want to embed content from a internal web-server e.g. http://foo to our public web-server http://sar.informatik.hu-berlin.de. In particular the frontend request http://sar.informatik.hu-berlin.de/test/bla.html should get the response for http://foo/dir/bla.html. Thus the mapping is:

  • http://sar.informatik.hu-berlin.de/test -> http://foo/dir.

From outside this should be look like a local web directory.

Used Software

IIS ReverseProxy in particular v1.5. frontendredirectionsIprehanowikiase of software redirections of the backend server are not forwarded transparently to the frontend. Therfore we patched the C-Sharpe code to take care of that. We disabled the internal handling of redirections and transpose them instead to the frontend.

38c38
<       const int MaximumRedirections = 50;
---
>               const int MaximumRedirections = 0;
357a358,370
>                       switch((int) backEndResponse.StatusCode) {
>                               case 301:
>                               case 302:
>                               case 303:
>                               case 307:
>                                       frontEndResponse.StatusCode = (int) back                                                                                                              EndResponse.StatusCode;
>                                       string newLocation = backEndResponse.Hea                                                                                                              ders["Location"];
>                                       newLocation = Regex.Replace(newLocation,                                                                                                               backEndSite,
>                                               frontEndRequest.Url.GetLeftPart(                                                                                                              UriPartial.Authority) + frontEndRequest.ApplicationPath,
>                                               RegexOptions.IgnoreCase);
>                                       frontEndResponse.RedirectLocation = newL                                                                                                              ocation;
>                                       break;
>                       }

Then redirections which usally occur if you enterXP.g. http://foo/dir -> http://foo/dir/ are forwarded to the browser as http://sar.informatik.hu-berlin.de/test -> http://sar.informatik.hu-berlin.de/test/.

Installation

Based on W2k/XP, Win2003 pngrproxy=== Walk through ===

  1. appSettingsktory where software lives e.g. C:\Inetpub\test_virtual and extract archive "\\dc\pub\2006\2006 Software\ReverseProxy_15_SAR.zip" to that directory.
  2. Create in thBackEndSite virtual directory
  3. GappSettingsas name under which the resource should be reachable by the frontend test
  4. Select the Web Site Conten Directory C:\Inetpub\test_virtual
  5. OK.
  6. nowikithepreoperties of the virtual dir.
  7. PUninstalling
  8. Press Configuration
  9. Insert
  10. Enter: Executable C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll and uncheck "Verify that file exists"
  11. If you saelect .asax and then press Edit it should look like that:
  12. Open cmd.exe to register ICSharpCode.SharpZipLib.dll and run
    cd C:\Inetpub\test_virtual

C:\Inetpub\test_virtual>C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\gacutil.exe /i ICSharpCode.SharpZipLib.dll

  1. Finallly you have to configure the proxy by editing C:\Inetpub\test_virtual\Web.config
    <?xml version="1.0" encoding="utf-8" ?>

<configuration>

<appSettings> <add key="BackEndSite" value="http://foo/dir" /> </appSettings>

 <system.web>

...

Uninstalling

  • Unregister the gzip-DLLICSharpCode.SharpZipLib.dll by running gacutil /u ICSharpCode.SharpZipLib.dll.
  • Remove the virtual directory test in the IIS-MMC.
  • Remove the directory C:\Inetpub\test_virtual.