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)
No edit summary
Wolfm (talk | contribs)
No edit summary
Line 45: Line 45:
# Enter: Executable <code>C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll</code> and uncheck "Verify that file exists" [[Image:rproxy_10.png]]
# Enter: Executable <code>C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll</code> and uncheck "Verify that file exists" [[Image:rproxy_10.png]]
# If you saelect <code>.asax</code> and then press Edit it should look like that: [[Image:rproxy_11.png]]
# If you saelect <code>.asax</code> and then press Edit it should look like that: [[Image:rproxy_11.png]]
# Open cmd-promt and to register <code>ICSharpCode.SharpZipLib.dll</code> and run
# Open cmd.exe to register <code>ICSharpCode.SharpZipLib.dll</code> and run <pre><nowiki>cd C:\Inetpub\test_virtual
<pre><nowiki>cd C:\Inetpub\test_virtual
C:\Inetpub\test_virtual>C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\gacutil.exe /i ICSharpCode.SharpZipLib.dll</nowiki></pre> [[Image:rproxy_12.png]]
C:\Inetpub\test_virtual>C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\gacutil.exe /i ICSharpCode.SharpZipLib.dll</nowiki></pre> [[Image:rproxy_12.png]]
# Finallly you have to configure the proxy by editing <code>C:\Inetpub\test_virtual\Web.config</code>
# Finallly you have to configure the proxy by editing <code>C:\Inetpub\test_virtual\Web.config</code> <pre><nowiki><?xml version="1.0" encoding="utf-8" ?>
<pre><nowiki><?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configuration>



Revision as of 07:00, 12 May 2006

Problem to solve

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

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

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

Used Software

IIS Reverse Proxy in particular v1.5. In that release 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) backEndResponse.StatusCode;
> 					string newLocation = backEndResponse.Headers["Location"];
> 					newLocation = Regex.Replace(newLocation, backEndSite, 
> 						frontEndRequest.Url.GetLeftPart(UriPartial.Authority) + frontEndRequest.ApplicationPath, 
> 						RegexOptions.IgnoreCase);
> 					frontEndResponse.RedirectLocation = newLocation;
> 					break;
> 			}

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

Installation

Based on W2k/XP, Win2003

Walk through

  1. Create Direktory 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 the IIS MMC a virtual directory
  3. Give the alias 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. Check the Properties of the virtual dir.
  7. Press Create.
  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.