Usando Apache com mod_proxy
Aplicações Atlassian permitem o uso de proxies reversos, porém o Suporte Atlassian não oferece assistência para configuração. Como consequência, a Atlassian não pode garantir qualquer suporte para eles.
Caso seja necessário assistência para a configuração, crie uma pergunta no Atlassian Answers.
Você pode usar essa configuração quando:
- Você já tem um site Apache e deseja adicionar o Confluence (por exemplo, http://www.example.com/confluence).
- Você tem duas ou mais aplicações Java, cada uma trabalhando em seu próprio servidor de aplicação em portas diferentes, por exemplo, http://example:8090/confluence e http://example:8080/JIRA e você deseja ter ambas disponíveis na porta HTTP regular (80) (por exemplo, em http://www.example.com/confluence e http://www.example.com/jira). Cada aplicação pode ser reiniciada, gerenciada e depurada separadamente.
Nota:
Nesta página:
Configuração básica
Nestes exemplos, usamos o seguinte:
http://www.example.com/confluence - o URL desejado
http://exemplo:8090 – o nome do host e a porta em que o Confluence está atualmente instalado
http://exemplo:8091 – o nome do host e a porta padrão do Synchrony, o serviço que alimenta a edição colaborativa
/confluence – o caminho de contexto desejado para o Confluence (a parte depois do nome do host e porta)
/synchrony – o caminho de contexto para Synchrony, o processo que alimenta a edição colaborativa
Será necessário substituir esses URLs com seus próprios URLs.
1 Configure o caminho do contexto
Se desejar acessar o Confluence sem um caminho de contexto, como em www.exemplo.com, ignore este passo.
Configure seu caminho de aplicação Confluence (a parte após o nome de host e porta) no Tomcat. Neste exemplo, o caminho de contexto será /confluence
.
Edite <installation-directory>conf/server.xml
, localize a definição "Context":
<Context path="" docBase="../confluence" debug="0" reloadable="true">
e alterando-a para:
<Context path="/confluence" docBase="../confluence" debug="0" reloadable="true">
Reinicie o Confluence e verifique se consegue acessá-lo em http://example:8090/confluence.
2 Determinar o URL para redirecionamento
Em seguida, configure o URL para redirecionamento. No mesmo arquivo <installation-directory>conf/server.xml
, localize o seguinte segmento de código:
<Connector port="8090" connectionTimeout="20000" redirectPort="8443"
maxThreads="48" minSpareThreads="10"
enableLookups="false" acceptCount="10" debug="0" URIEncoding="UTF-8"
protocol="org.apache.coyote.http11.Http11NioProtocol" />
E adicione proxyName, proxyPort e Scheme como demonstrado na última linha abaixo:
<Connector port="8090" connectionTimeout="20000" redirectPort="8443"
maxThreads="48" minSpareThreads="10"
enableLookups="false" acceptCount="10" debug="0" URIEncoding="UTF-8"
protocol="org.apache.coyote.http11.Http11NioProtocol"
proxyName="www.example.com" proxyPort="80" scheme="http"/>
Se estiver usando SSL, o esquema será "https".
3 Configure mod_proxy
Utilize um dos exemplos abaixo para editar seu arquivo Apache http.conf
para pedidos de proxy para o servidor da aplicação.
Será necessário habilitar os seguintes módulos Apache requeridos, se eles já não estiverem habilitados:
- mod_proxy
- mod_proxy_http
- proxy_wstunnel
- mod_rewrite
(proxy_wstunnel e mod_rewrite são novos requisitos do Confluence 6.0)
O formato do arquivo http.conf
e localização dos módulos podem ser diferentes no seu sistema operacional. Recomendamos aos usuários de Windows que especifiquem o caminho absoluto aos arquivos de módulo.
Exemplo 1: Configuração com caminho de contexto
Use este exemplo se você configurou um caminho de contexto no passo 1 e acessará o Confluence com um caminho de contexto como este http://www.example.com/confluence.
Neste exemplo, os usuários conectarão ao Synchrony, que é necessário para edição colaborativa, diretamente através de WebSockets.
A ordem das diretivas na configuração é importante.
# Coloque isto após as outras diretivas LoadModule,
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
LoadModule proxy_wstunnel_module /usr/lib/apache2/modules/mod_proxy_wstunnel.so
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
# Coloque isto na seção principal da sua configuração (ou host virtual, se estiver usando host virtuais Apache)
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
ProxyPass /synchrony http://localhost:8091/synchrony
<Location /synchrony>
Require all granted
RewriteEngine on
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
RewriteRule .* ws://localhost:8091%{REQUEST_URI} [P]
</Location>
ProxyPass /confluence http://<domain>:8090/confluence
ProxyPassReverse /confluence http://<domain>:8090/confluence
<Location /confluence>
Require all granted
</Location>
Notas: Não é possível usar Apache HTTP Server 2.2 com Confluence 6.0 ou posterior. Se você planeja usar SSL, será necessária a versão 2.4.10 ou posterior.
Exemplo 2: Configuração sem caminho de contexto
Use este exemplo se você ignorou o passo 1 e acessará o Confluence sem um caminho de contexto como este http://www.example.com.
Como no exemplo anterior, os usuários conectarão ao Synchrony, que é necessário para edição colaborativa, diretamente através de WebSockets.
A ordem das diretivas na configuração é importante.
# Coloque isto após as outras diretivas LoadModule,
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
LoadModule proxy_wstunnel_module /usr/lib/apache2/modules/mod_proxy_wstunnel.so
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
# Coloque isto na seção principal da sua configuração (ou host virtual, se estiver usando host virtuais Apache)
ProxyRequests Off
ProxyPreserveHost On
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/synchrony
RewriteRule ^/(.*) http://<domain>:8090/$1 [P]
<Proxy *>
Require all granted
</Proxy>
ProxyPass /synchrony http://<domain>:8091/synchrony
<Location /synchrony>
Require all granted
RewriteEngine on
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
RewriteRule .* ws://<domain>:8091%{REQUEST_URI} [P]
</Location>
ProxyPass / http://<domain>:8090
ProxyPassReverse / http://<domain>:8090
<Location />
Require all granted
</Location>
Nota: Não é possível usar Apache HTTP Server 2.2 com Confluence 6.0 ou posterior. Se você planeja usar SSL, será necessária a versão 2.4.10 ou posterior.
4 Reinicie o Apache
Isso é necessário para registrar a nova configuração. Para reiniciar o Apache, execute o seguinte comando:
sudo apachectl graceful
5 Desabilite a compressão HTTP
Executar a compressão tanto no proxy quanto no Tomcat pode causar problemas na integração com outras aplicações Atlassian, como JIRA. Desabilite a compressão HTTP conforme as instruções em Comprimir uma resposta HTTP dentro do Confluence.
6 Altere o URL base do Confluence
O último passo é configurar o URL base para o endereço que você está usando dentro do proxy, por exemplo http://www.example.com/confluence.
Adicionando SSL
This guide for integrating Apache and SSL is now obsolete
We've created a much better guide for Securing your Atlassian applications with Apache using SSL.
You may also be interested in our other Reverse Proxy Setup Guides:
Mais informações
- No site mod_proxy_html há documentação e exemplos sobre o uso deste módulo na configuração complexa.
- OApache Week tem um tutorial que lida com uma situação complexa envolvendo duas aplicações e ProxyHTMLURLMap.