By 21 Luglio 2015

Creazione di un proxy inverso con URL Rewrite per IIS

Ci sono alcuni casi di “hosting” in cui è necessario fornire un ReverseProxy attraverso un server web IIS. L’esempio più comune è quando si dispone di un server Web interno, che non è esposto a Internet, e si dispone di un server web pubblico accessibile a Internet. Se si vuole inoltrare il traffico dal server Web interno, è possibile farlo attraverso il web server pubblico con la creazione di un tunnel (aka proxy inverso).

Questosi può realizzare con Rewrite URL e IIS. Sarà inoltre necessario Application Request Routing (ARR) installato, anche se per un semplice proxy inverso non sarà possibile utilizzare la maggior parte delle funzionalità di ARR. Se non si dispone già di URL Rewrite e ARR installato è possibile farlo facilmente con il Web Platform Installer .

In primo luogo è necessario creare un sito web sul web server pubblico.
Dopo aver creato il sito, aprire URL Rewrite (a livello di sito).

image_thumb_226246C1

Utilizzando il “Aggiungi regola (s) …” modello che si apre dal riquadro azioni destro, creare una nuova regola di “Proxy Inverso”

URL Rewrite Module

Se si riceve una richiesta (la prima volta) che la funzionalità proxy deve essere attivata, selezionare OK . Questo segnala che un proxy può instradare il traffico al di fuori del proprio server web (che risulta essere il nostro obiettivo in questo caso). La segnalazione serve per essere consapevoli del fatto che le regole del proxy inverso possono essere “pericolose”.

Abilitazione_Proxy

Il passo successivo (e finale) della regola richiede alcune impostazioni :

image_thumb_030F7A21

Il primo campo chiede il nome del server Web interno. Nel nostro esempio, è 10.10.0.50:8111 ma può essere qualsiasi URL, inclusa una sottocartella come internal.mysite.com/blog . Non includere http o https qui. Il sistema “presuppone” che non sia inserito.

È possibile scegliere se eseguire Offloading SSL o meno. Se la lasciate selezionata, allora tutte le richieste al server interno saranno su HTTP indipendentemente dalla richiesta web originale. Questo può essere di aiuto con le prestazioni SSL se tutte le richieste sono all’interno di una rete di fiducia. Se il percorso di rete tra i due server web non è completamente attendibile, deselezionare questa.

Successivamente, il modello consente di creare una regola di uscita. Questa è utilizzata per riscrivere “al volo” i link nella pagina, ad esempio, con nome di dominio pubblico”, piuttosto che il nome di dominio interno. Regole in uscita hanno molto overhead della CPU, perché l’intero contenuto web ha bisogno di essere analizzato e aggiornato. Tuttavia, se ne avete bisogno, allora vale la pena utilizzarle.

image_thumb_4

ESEMPIO
Il sito web che utilizziamo è : https://test.serverbay.it
in questo esempio prenderemo le pagine da un URL : https://srv01.serverbay.it
“Riscriveremo”poi tutte le occorrenze : http://www.serverbay.it/ > in https://test.serverbay.it

<system.webServer>

<rewrite>
<outboundRules>
<rule name=”ReverseProxyOutboundRule1″ preCondition=”ResponseIsHtml1″>
<match filterByTags=”A, Form, Img” pattern=”^http(s)?://www.serverbay.it/(.*)” />
<action type=”Rewrite” value=”http{R:1}://test.serverbay.it/{R:2}” />
</rule>
<preConditions>
<preCondition name=”Ishtml”>
<add input=”{RESPONSE_CONTENT_TYPE}” pattern=”text/html” />
</preCondition>
<preCondition name=”ResponseIsHtml1″>
<add input=”{RESPONSE_CONTENT_TYPE}” pattern=”^text/html” />
</preCondition>
</preConditions>

</outboundRules>
<rules>
<rule name=”ReverseProxyInboundRule1″ stopProcessing=”true”>
<match url=”(.*)” />
<action type=”Rewrite” url=”https://srv01.serverbay.it/{R:1}” />
<serverVariables>
<set name=”HTTP_ACCEPT_ENCODING” value=”” />
</serverVariables>
</rule>
</rules>
</rewrite>
<httpErrors errorMode=”Detailed” />

</system.webServer>

Creazione di un proxy inverso con URL Rewrite per IIS,  URL Rewrite per IIS, Regole di riscrittura in uscita, Proxy, IIS Proxy, riscrivere Url al volo, URL Rewrite per IIS, come utilizzare Reverse Proxy URL Rewrite per IIS

Posted in: IIS 7, IIS 8

About the Author:

shared on wplocker.com