Apache com Tomcat
Para configurar o Apache HTTPD como servidor web e o Tomcat como servidor de aplicação é necessário utilizar os módulos mod_proxy, mod_proxy_ajp, mod_proxy_wstunnel, mod_headers, mod_include e mod_rewrite incluídos com o Apache.
Devido à funcionalidade de cache do LumisXP, o apache deverá ser configurado para verificar se existe localmente um arquivo estático a ser servido. Caso esse arquivo não exista, a requisição deverá ser delegada para o servidor de aplicação, mesmo se a requisição tenha sido realizada para um arquivo estático, pois esse arquivo pode ser um arquivo de cache que ainda não foi gerado ou que foi expirado.
Outras configurações avançadas para fins de otimização também são recomendadas para ambientes de produção. Não será abordado como realizar a otimização da comunicação entre o servidor de web e o servidor de aplicação.
Para mais informações sobre os módulos mod_filter, mod_headers, mod_include, mod_proxy, mod_proxy_ajp, mod_proxy_wstunnel e mod_rewrite, consulte a documentação correspondente do Apache.
Segue o passo a passo necessário para realizar a configuração:
- Editar o arquivo APACHE_HOME/conf/httpd.conf habilitando os módulos mod_filter, mod_headers, mod_include, mod_proxy, mod_proxy_ajp, mod_proxy_wstunnel e mod_rewrite, caso ainda não estejam habilitados:
AخA1
LoadModule filter_module modules/mod_filter.so
2LoadModule headers_module modules/mod_headers.so
3LoadModule include_module modules/mod_include.so
4LoadModule proxy_module modules/mod_proxy.so
5LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
6LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
7LoadModule rewrite_module modules/mod_rewrite.so
- Configurar o virtual host, por exemplo, no arquivo APACHE_HOME/conf/httpd.conf:
x1
<VirtualHost *>
2DocumentRoot "WEB_ROOT_PATH"
3DirectoryIndex index.htm
4
5<Directory WEB_ROOT_PATH>
6Require all granted
7</Directory>
89# enable SSI for text/html
10Options +IncludesNOEXEC
11AddType text/html .htm .html .shtm .shtml
12AddOutputFilterByType INCLUDES text/html
13
14RewriteEngine on
1516# respond 404 to any request containing multiple / in the path
17RewriteCond %{THE_REQUEST} ^[^?]*//
18RewriteRule ^ - [L,R=404]
1920RewriteCond %{REQUEST_FILENAME} !^.*\.wslumis$
21RewriteCond %{HTTP:Connection} ^.*upgrade.* [NC]
22RewriteRule ^(.*) $1.wslumis [PT,env=X-lumWebServer:true]
2324RewriteCond %{HTTP:Connection} !^.*upgrade.* [NC]
25RewriteCond %{REQUEST_FILENAME} !^.*\.jsp$
26RewriteCond %{REQUEST_FILENAME} !^.*\.lumis$
27RewriteCond %{REQUEST_FILENAME} ^/(.*)
28RewriteCond WEB_ROOT_PATH/%1 !-f
29RewriteCond WEB_ROOT_PATH/%1/index.htm !-f
30RewriteRule ^(.*) $1.lumis [PT,env=X-lumWebServer:true]
3132RequestHeader set X-lumWebServer "apache" env=X-lumWebServer
33Header set X-UA-Compatible "IE=edge" env=!X-lumWebServer
3435ProxyPreserveHost On
36ProxyPassMatch ^/(.*)\.wslumis$ ws://localhost:8080/$1
37ProxyPassMatch ^/(.*\.(?:jsp|lumis))$ ajp://localhost:8009/$1 secret=SUA_SENHA_AJP
3839</VirtualHost>
Caso o contexto de sua aplicação não esteja na raiz, por exemplo, em /portal, será necessário configurar o virtual host da seguinte forma:
411<VirtualHost *>
2Alias /portal "WEB_ROOT_PATH"
3DirectoryIndex index.htm
45RedirectMatch permanent ^/portal$ /portal/
6
7<Directory WEB_ROOT_PATH>
8Require all granted
9</Directory>
1011# enable SSI for text/html
12Options +IncludesNOEXEC
13AddType text/html .htm .html .shtm .shtml
14AddOutputFilterByType INCLUDES text/html
15
16RewriteEngine on
1718# respond 404 to any request containing multiple / in the path
19RewriteCond %{THE_REQUEST} ^[^?]*//
20RewriteRule ^ - [L,R=404]
2122RewriteCond %{REQUEST_FILENAME} !^.*\.wslumis$
23RewriteCond %{HTTP:Connection} ^.*upgrade.* [NC]
24RewriteRule ^(.*) $1.wslumis [PT,env=X-lumWebServer:true]
2526RewriteCond %{HTTP:Connection} !^.*upgrade.* [NC]
27RewriteCond %{REQUEST_FILENAME} !^.*\.jsp$
28RewriteCond %{REQUEST_FILENAME} !^.*\.lumis$
29RewriteCond %{REQUEST_FILENAME} ^/portal/(.*)
30RewriteCond WEB_ROOT_PATH/%1 !-f
31RewriteCond WEB_ROOT_PATH/%1/index.htm !-f
32RewriteRule ^(.*) $1.lumis [PT,env=X-lumWebServer:true]
3334RequestHeader set X-lumWebServer "apache" env=X-lumWebServer
35Header set X-UA-Compatible "IE=edge" env=!X-lumWebServer
3637ProxyPreserveHost On
38ProxyPassMatch ^/(.*)\.wslumis$ ws://localhost:8080/$1
39ProxyPassMatch ^/portal/(.*\.(?:jsp|lumis))$ ajp://localhost:8009/portal/$1 secret=SUA_SENHA_AJP
4041</VirtualHost>
- Configurar o connector AJP no arquivo TOMCAT_HOME\conf\server.xml;
Localizar o connector com o protocolo AJP/1.3 e adicionar as configurações
URIEncoding
,maxPostSize
,emptySessionPath
,secretRequired
esecret
:51<Connector port="8009"
2enableLookups="false" redirectPort="8443" protocol="AJP/1.3"
3URIEncoding="UTF-8" maxPostSize="2097152" bindOnInit="false"
4emptySessionPath="true" secretRequired="true" secret="SUA_SENHA_AJP"
5</Connector>
O conector AJP por padrão faz bind no endereço de loopback. Se o Apache HTTPD não estiver rodando na mesma máquina, é necessário acrescentar no Connector o atributo
address
com o endereço de bind desejado, como por exemplo:address="0.0.0.0"
.