User Tools

Site Tools


Configure IIS as a Proxy Server for an EASA cluster

This page describes a reference implementation for an IIS proxy server running https behind a firewall which manages connections to an EASA Server and two EASAP (or historically 'JSF') Servers.

  • The machine names are,
    • iisgateway.easa.com
    • easa-server
    • jsf-server-one
    • jsf-server-two

iisgateway.easa.com is running https listening on ports 8443, 8081, 8082.

The EASA machines are all running http listening on port 8080.

An Author or User will directly interact only with ports on iisgateway.easa.com.

Below is a summary and reference for this four machine IIS and EASA example configuration.



Microsoft IIS server configuration

  • Download and install the Application Request Routing (ARR) module 2.0 for IIS.
  • Double-click the Application Request Routing Cache icon in the IIS section.
  • In the right-hand pane
    • Click on Server Proxy Settings
    • In this window, (pictured below)
      1. Check,
        • Enable proxy
      2. Set,
        • HTTP version → Pass through
      3. Uncheck,
        • Reverse rewrite host in response headers


If HTTP 500 errors are a problem, turn off static compression (uncheck box below) for all three EASA machines.

If HTTP 500 errors persist and compression is still turned on for other non-EASA hosts, change the order of the Modules so that the RewriteModule occurs before the StaticCompressionModule.

  • Select Modules for the default site
  • Select
    • View Ordered List (from right-hand side menu)
    • Select RewriteModule
      • Use Move Up link to raise RewriteModule above StaticCompressionModule in the list (shown below)



EASA images occasionally require very long URL's

  • Modify the registry key below to support long URL's,
    • Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters


Rewrite Rules

easa-server→ Inbound and Outbound Rules

  • <?xml version=“1.0” encoding=“UTF-8”?>
    • <configuration><system.webServer><rewrite>
      • <outboundRules>
        • <rule name=“outbound-easa-tags” enabled=“true”>
        • <match filterByTags=“A, Area, Base, Form, Head, IFrame, Img, Input, Link, Script
          • pattern=“^http://(easa-server:8080+/)(.*)” />
        • <action type=“Rewrite” value=“http://iisgateway.easa.com:8443/{R:2}” />
        • </rule>
        • <rule name=“outbound-easa-servervars”>
          • <match serverVariable=“RESPONSE_Location
            • pattern=“^http://(easa-server:8080+/)(.*)” />
          • <action type=“Rewrite” value=“http://iisgateway.easa.com:8443/{R:2}” />
        • </rule>
        • <preConditions>
          • <preCondition name=“ResponseIsHtml1”>
            • <add input=“{RESPONSE_CONTENT_TYPE}” pattern=“^text/html” />
          • </preCondition>
        • </preConditions>
      • </outboundRules>
      • <rules>
        • <rule name=“inbound-easa” patternSyntax=“Wildcard”>
          • <match url=“*” />
          • <action type=“Rewrite” url=“http://easa-server:8080/{R:0}” />
        • </rule>
      • </rules>
    • </rewrite>
    • <urlCompression doDynamicCompression=“false” dynamicCompressionBeforeCache=“false” />
  • </system.webServer></configuration>

jsf-server-one → Inbound and Outbound Rules

  • <?xml version=“1.0” encoding=“UTF-8”?>
    • <configuration><system.webServer>
      • <rewrite>
        • <rules>
          • <rule name=“inbound-jsf1” patternSyntax=“ECMAScript” stopProcessing=“false”>
            • <match url=“(.*)” />
            • <action type=“Rewrite” url=“http://jsf-server-one:8080/{R:0}” />
          • </rule>
        • </rules>
        • <outboundRules>
          • <rule name=“outbound-jsf1” enabled=“true”>
            • <match filterByTags=“A, Area, Base, Form, Head, IFrame, Img, Input, Link, Script
              • pattern=“http://jsf-server-one:8080/(.*)” />
            • <action type=“Rewrite” value=“https://iisgateway.easa.com:8081/{R:1}” />
          • </rule>
        • </outboundRules>
      • </rewrite>
      • <urlCompression doDynamicCompression=“false” />
  • </system.webServer></configuration>

jsf-server-two → Inbound and Outbound Rules

  • jsf-server-two has the identical configuration as jsf-server-one above with the following two text substitutions,
    • Replace each instance of,
      • 'jsf-server-one' with 'jsf-server-two'
      • ':8081' with ':8082'

EASAP (or 'JSF') Server configuration

  • Configuration of jsf-server-one,
    • <SERVERDATA>\jsf-easa\admin\config\context.properties:
      • easa.server.public=https://iisgateway.easa.com:8443/easa
      • easa.server.private=http://easa-server:8080/easa
      • jsf.public.url=https://iisgateway.easa.com:8081/easa
  • Configuration of jsf-server-two,
    • <SERVERDATA>\jsf-easa\admin\config\context.properties:
      • easa.server.public=https://iisgateway.easa.com:8443/easa
      • easa.server.private=http://easa-server:8080/easa
      • jsf.public.url=https://iisgateway.easa.com:8082/easa


Page Tools