Subdomínio de proxy reverso para subpasta no IIS7

1

Atualmente, estou tentando implementar um sistema Owncloud em nossa empresa. Eu tenho o sistema Owncloud instalado e funcionando em um servidor interno que está por trás de um firewall. Eu posso acessar a instalação internamente navegando para servername.company.co.nz/owncloud

Temos um servidor da web IIS voltado para o público (SBS 2012). Eu gostaria de usar isso como um proxy reverso para a instalação em nuvem. Eu li alguns artigos e tutoriais sobre como conseguir isso usando o URL Rewriting e ARR no IIS - este em particular parecia ser um bom começo: Proxy Reverso do IIS 7 com base no host de nome de domínio?

Mas até agora não consegui criar nenhuma regra de proxy reverso que funcione.

Basicamente, eu gostaria que um subdomínio cloud.company.co.nz invertesse o proxy para o caminho interno do servidor web server.company.co.nz/owncloud não foi capaz de descobrir como conseguir isso.

Atualmente tenho um novo site no servidor IIS que está vinculado ao nome do host cloud.company.co.nz , mas isso é tudo o que consegui realizar sem derrubar nossos Serviços Web do Exchange.

Por favor, tenha em mente que eu sou um novato IIS. Qualquer ajuda é muito bem recebida nesta fase.

Editar 1:

De acordo com a sugestão do @jotap, meu web.config agora se parece com isso. No entanto, tudo que recebo é um erro 503. Alguma idéia de por que eu iria conseguir isso? Além disso, onde devo estar procurando em termos de logs etc para pistas?

Felicidades

<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="ReverseProxyInboundRule1" enabled="false" stopProcessing="true"> <match url="(.*)" /> <action type="Rewrite" url="http://1.2.3.4/owncloud{R:1}" /> </rule> </rules> <outboundRules> <rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1" enabled="false"> <match filterByTags="A, Form, Img" pattern="^http(s)?://1.2.3.4/owncloud/(.*)" /> <action type="Rewrite" value="http{R:1}://cloud.company.co.nz/{R:2}" /> </rule> <preConditions> <preCondition name="ResponseIsHtml1"> <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" /> </preCondition> </preConditions> </outboundRules> </rewrite> </system.webServer> </configuration>

    
por Malcolm Ward 19.02.2016 / 00:57

1 resposta

0

O diabo está no detalhe quando se trata de reverter o proxy com IIS e ARR, os passos básicos para conseguir isso são:

  • Instalar ARR e URLRewrite
  • Configure o ARR para o proxy reverso: Nível do servidor do IIS - > Cache de roteamento de solicitação de aplicativo - > Configurações de proxy do servidor
    • A configuração mais básica que você deve fazer é "Ativar proxy" e deixar o restante como está.
  • Configure o site para fazer proxy de todas as solicitações para o novo host. Isso pode ser feito através da GUI, alternadamente você pode usar este web.config para você ir (coloque-o na raiz do site que está fazendo o proxy):

    <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="inbound"> <match url="(.*)" /> <action type="Rewrite" url="http://server.company.co.nz/owncloud/{R:0}" /> </rule> </rules> </rewrite> </system.webServer> </configuration>

Não tenho certeza se você está familiarizado com expressões regulares, ou seja, basicamente, "capture a URL após o nome do host e faça uma solicitação para server.company.co.nz, anexando a URL capturada até o final de o subdiretório owncloud ".

Observe que você pode ter problemas se o site no back-end estiver compactando o conteúdo (você receberá um erro 500). Além disso, se funcionar, você poderá encontrar todas as suas imagens e CSS quebrados, e nesse caso terá que configurar a reimpressão de saída também, mas isso depende do seu back-end e as regras são específicas para os problemas que você pode ter veja como você vai. Você pode ter que fazer mais uma dúzia de ajustes (ou mais) para acertar.

    
por 19.02.2016 / 07:23