Sharepoint com proxy reverso do Apache usando um subdiretório

1

Nossa equipe é nova no Apache. Temos um aplicativo do SharePoint 2007 que fica no nosso servidor interno, em um endereço que chamaremos link .

Precisamos usar o Apache como um proxy reverso do site externo para o servidor interno. o servidor externo está em um endereço que chamaremos de link .

O problema vem com os links relativos do SharePoint. links no A página do sharepoint pode apontar para "/_layouts/dir/subdir/page.aspx", mas quando passado para o proxy, este link mostra na página como link ... (nenhum / appname acrescentado). Então isso Parece que temos que fazer uma reescrita de URL.

Mas isso é estendido a outros problemas - URLs relativos em folhas de estilo, javascript, etc. que o SharePoint gera (por exemplo, sem controle).

O SharePoint também cria algumas URLs ao longo das linhas de "\ u002flayouts \ u002fuserdisp.aspx? Force = True \ u0026ID="

Até agora, acho que a melhor maneira de resolver isso é, para cada URL (incluindo em folhas de estilo, javascript, etc.):

  1. Troque as barras incorretas.
  2. Transformar qualquer URL relativa (os URLs que começam com "/" são como estou supondo podemos definir isso ") e transformá-los em link "
  3. Use ProxyPass e ProxyPass reverse para transformar os caminhos (que todos devem agora ser absolutos e corretamente formatados).

Isso pode estar certo ou errado e eu agradeço suas opiniões sobre como fazer melhor.

Em busca desse objetivo, até agora eu tenho um arquivo de configuração que eu sou certo está errado de muitas maneiras, mas acho que é um começo. Eu gostaria do seu opiniões sobre como implementar melhor a minha ideia também.

ProxyRequests off
<Proxy *>
 Order deny,allow
 Allow from all
</Proxy>

ProxyPass /appname/ http://internal.site.com/
ProxyPassReverse /appname/ http://internal.site.com/


<Location /appname/>

ProxyHTMLEnable On
ProxyHTMLExtended On
ProxyHTMLLogVerbose On

#List of HTML elements to change
ProxyHTMLLinks               a                              href
ProxyHTMLLinks               area                       href
ProxyHTMLLinks               link                         href
ProxyHTMLLinks               img                         src longdesc usemap
ProxyHTMLLinks               object                   classid codebase
data usemap
ProxyHTMLLinks               q                             cite
ProxyHTMLLinks               blockquote         cite
ProxyHTMLLinks               ins                          cite
ProxyHTMLLinks               del                          cite
ProxyHTMLLinks               form                      action
ProxyHTMLLinks               input                     src usemap
ProxyHTMLLinks               head                      profile
ProxyHTMLLinks               base                      href
ProxyHTMLLinks               script                     src for

# To support scripting events (with ProxyHTMLExtended On),
# you'll need to declare them too.

ProxyHTMLEvents           onclick ondblclick onmousedown onmouseup \
                               onmouseover onmousemove onmouseout onkeypress \
                               onkeydown onkeyup onfocus onblur onload \
                               onunload onsubmit onreset onselect onchange

#Goal: Map any URL that starts with a / (i.e. a relative link) to
http://internal.site.com/
ProxyHTMLURLMap ^/ http://internal.site.com/

</Location>

Agradeço antecipadamente por qualquer ajuda que você possa dar!

Tudo de bom, Sean     

por SeanKilleen 16.02.2011 / 00:34

2 respostas

1

A dificuldade que você está enfrentando é comum: você deseja acessar um aplicativo da Web usando um caminho de URI diferente do esperado pelo aplicativo. O mecanismo proxy padrão do Apache só cuida dos links nos cabeçalhos (por exemplo, Location: cabeçalhos), mas não no conteúdo do documento, portanto, os links que usam caminhos absolutos como /images/foo.png não atingem mais o local correto (caminhos relativos devem geralmente funcionam bem).

Uma solução comum é usar o módulo mod_proxy_html , que permite realizar substituições no conteúdo de suas páginas da web. Na verdade, este tutorial cobre exatamente a situação que você descreveu.

    
por 16.02.2011 / 02:51
0

Por que não usar um sub-domínio em vez de uma pasta:

link em vez de link . Você sempre pode configurar um redirecionamento da pasta se tiver que começar por aí. Isso deve evitar o problema dos links relativos.

    
por 16.02.2011 / 01:19