Open the menu

    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:

    1. 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خA
       
      1
      LoadModule filter_module modules/mod_filter.so
      2
      LoadModule headers_module modules/mod_headers.so
      3
      LoadModule include_module modules/mod_include.so
      4
      LoadModule proxy_module modules/mod_proxy.so
      5
      LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
      6
      LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
      7
      LoadModule rewrite_module modules/mod_rewrite.so

    2. Configurar o virtual host, por exemplo, no arquivo APACHE_HOME/conf/httpd.conf:

      x
       
      1
      <VirtualHost *>
      2
      DocumentRoot "WEB_ROOT_PATH"
      3
      DirectoryIndex index.htm
      4
      5
      <Directory WEB_ROOT_PATH>
      6
           Require all granted
      7
      </Directory>
      8
       
      9
      # enable SSI for text/html
      10
      Options +IncludesNOEXEC
      11
      AddType text/html .htm .html .shtm .shtml
      12
      AddOutputFilterByType INCLUDES text/html
      13
      14
      RewriteEngine on
      15
       
      16
      # respond 404 to any request containing multiple / in the path
      17
      RewriteCond %{THE_REQUEST} ^[^?]*//
      18
      RewriteRule ^ - [L,R=404]
      19
       
      20
      RewriteCond %{REQUEST_FILENAME} !^.*\.wslumis$
      21
      RewriteCond %{HTTP:Connection} ^.*upgrade.* [NC]
      22
      RewriteRule ^(.*) $1.wslumis [PT,env=X-lumWebServer:true]
      23
       
      24
      RewriteCond %{HTTP:Connection} !^.*upgrade.* [NC]
      25
      RewriteCond %{REQUEST_FILENAME} !^.*\.jsp$
      26
      RewriteCond %{REQUEST_FILENAME} !^.*\.lumis$
      27
      RewriteCond %{REQUEST_FILENAME} ^/(.*)
      28
      RewriteCond WEB_ROOT_PATH/%1 !-f
      29
      RewriteCond WEB_ROOT_PATH/%1/index.htm !-f
      30
      RewriteRule ^(.*) $1.lumis [PT,env=X-lumWebServer:true]
      31
       
      32
      RequestHeader set X-lumWebServer "apache" env=X-lumWebServer
      33
      Header set X-UA-Compatible "IE=edge" env=!X-lumWebServer
      34
       
      35
      ProxyPreserveHost On
      36
      ProxyPassMatch ^/(.*)\.wslumis$ ws://localhost:8080/$1
      37
      ProxyPassMatch ^/(.*\.(?:jsp|lumis))$ ajp://localhost:8009/$1 secret=SUA_SENHA_AJP
      38
       
      39
      </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:

      41
       
      1
      <VirtualHost *>
      2
      Alias /portal "WEB_ROOT_PATH"
      3
      DirectoryIndex index.htm
      4
       
      5
      RedirectMatch permanent ^/portal$ /portal/
      6
      7
      <Directory WEB_ROOT_PATH>
      8
           Require all granted
      9
      </Directory>
      10
       
      11
      # enable SSI for text/html
      12
      Options +IncludesNOEXEC
      13
      AddType text/html .htm .html .shtm .shtml
      14
      AddOutputFilterByType INCLUDES text/html
      15
      16
      RewriteEngine on
      17
       
      18
      # respond 404 to any request containing multiple / in the path
      19
      RewriteCond %{THE_REQUEST} ^[^?]*//
      20
      RewriteRule ^ - [L,R=404]
      21
       
      22
      RewriteCond %{REQUEST_FILENAME} !^.*\.wslumis$
      23
      RewriteCond %{HTTP:Connection} ^.*upgrade.* [NC]
      24
      RewriteRule ^(.*) $1.wslumis [PT,env=X-lumWebServer:true]
      25
       
      26
      RewriteCond %{HTTP:Connection} !^.*upgrade.* [NC]
      27
      RewriteCond %{REQUEST_FILENAME} !^.*\.jsp$
      28
      RewriteCond %{REQUEST_FILENAME} !^.*\.lumis$
      29
      RewriteCond %{REQUEST_FILENAME} ^/portal/(.*)
      30
      RewriteCond WEB_ROOT_PATH/%1 !-f
      31
      RewriteCond WEB_ROOT_PATH/%1/index.htm !-f
      32
      RewriteRule ^(.*) $1.lumis [PT,env=X-lumWebServer:true]
      33
       
      34
      RequestHeader set X-lumWebServer "apache" env=X-lumWebServer
      35
      Header set X-UA-Compatible "IE=edge" env=!X-lumWebServer
      36
       
      37
      ProxyPreserveHost On
      38
      ProxyPassMatch ^/(.*)\.wslumis$ ws://localhost:8080/$1
      39
      ProxyPassMatch ^/portal/(.*\.(?:jsp|lumis))$ ajp://localhost:8009/portal/$1 secret=SUA_SENHA_AJP
      40
       
      41
      </VirtualHost>

    3. Configurar o connector AJP no arquivo TOMCAT_HOME\conf\server.xml;

      Localizar o connector com o protocolo AJP/1.3 e adicionar as configuraçõesURIEncoding, maxPostSize, emptySessionPath, secretRequired e secret:

      5
       
      1
      <Connector port="8009" 
      2
      enableLookups="false" redirectPort="8443" protocol="AJP/1.3" 
      3
      URIEncoding="UTF-8" maxPostSize="2097152" bindOnInit="false"
      4
      emptySessionPath="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".