Pular para o conteúdo principal
Version: 4.21.0

Configuração do Apache Tomcat com o NGINX

Introdução

O intuito dessa documentação é auxiliar a configuração do NGINX para se comunicar com o Fusion como proxy-reverso. Sua estrutura tem um funcionamento semelhante ao diagrama abaixo, onde o NGINX atua no intermédio de contato entre a requisição do usuário e o servidor do Fusion.

103

Atenção

Esse material de apoio foi desenvolvido com base na documentação oficial do NGINX e diversas configurações e/ou parâmetros podem sofrer alterações com o tempo, principalmente os métodos de aplicação do protocolo HTTPS, onde o resultado final varia dependendo a emissora do certificado e o NGINX em sua versão utilizada. Por isso, recomendamos que leve em consideração junto com esse material, a documentação oficial, que pode ser acessada clicando aqui.

Nota

Alguns processos de instalação são do tipo padrão, entretanto é exigido uma experiência prévia em informática de quem instalará a solução.

Download

Você poderá baixar o NGINX clicando aqui e buscando pela Mainline version.

109

Nota

Lembrando que a versão atual do NGINX (ou seja, no momento em que esse material foi desenvolvido) era a 1.23.1, entretanto, sempre deve ser realizado o download da última versão Mainline disponível no momento.

Configuração

Após a realização do download, com os privilégios de administrador, você deverá abrir o Disco Local C:, em seguida crie a pasta nginx e extraia todo o conteúdo do arquivo nginx-1.23.1.zip para a pasta criada, de maneira que fique igual o exemplo abaixo:

104

Substitua o conteúdo do arquivo nativo nginx.conf, que fica dentro da pasta C:/nginx/conf/, pelo conteúdo abaixo, de modo que fique desta maneira:

worker_processes auto;
user user password;

events {
worker_connections 4096;
}

http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 1800;
types_hash_max_size 2048;
client_max_body_size 500M;

include mime.types;
default_type application/octet-stream;
include "C:/nginx/sites-available/*.conf";

#Habilita a compressão gzip.
gzip on;
gzip_disable "msie6";
gzip_min_length 512;
gzip_types text/plain text/css text/javascript text/json application/x-javascript application/javascript application/json image/svg+xml;

#Map para config do websocket
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
}
Observação

Na linha 2, substitua as informações user password por um usuário e senha válidos do servidor, que serão utilizados para iniciar o NGINX.

Além disso, caso o NGINX tenha sido instalado em outro disco ou diretório, é importante ajustar o caminho indicado na linha 18, apontando para o local correto da instalação.

Em seguida, crie a pasta sites-available dentro do diretório C:/nginx/ e, dentro dela, crie um arquivo de texto chamado tomcat-proxy.conf (observe que sua extensão é .conf) de modo que fique no padrão abaixo:

105

Atenção

Os passos abaixo devem ser seguidos de acordo com a estrutura do seu ambiente.

Ambientes HTTP

Insira o conteúdo abaixo dentro do arquivo tomcat-proxy.conf, que fica dentro da pasta C:/nginx/sites-available/, de modo que fique desta maneira:

server {
listen 80;
underscores_in_headers on;

#Caminho da WebContent (webapps/fusion/ caso seja por deploy)
root "C:/Program Files/Apache Software Foundation/Tomcat 10.1.x/webapps/fusion";

#Porta do Tomcat, se não for 8080 alterar aqui.
set $tomcat_port 8080;
set $tomcat_address 127.0.0.1;

location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://$tomcat_address:$tomcat_port;
proxy_read_timeout 1800;
}

# Websocket
location /fusion/websocket {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_pass http://$tomcat_address:$tomcat_port;
proxy_read_timeout 1800;
}
}
Observação

Na linha 6 deve ser alterado o caminho do Fusion em duas condições:

Caso esteja compactado (.war), deve setar o caminho do pacote dentro do webapps do Tomcat.
Exemplo: C:/Program Files/Apache Software Foundation/Tomcat 10.1.x/webapps/fusion

Caso esteja extraído, deve setar o caminho direto do pacote.
Exemplo: C:/Neomind/Fusion/WebContent

Observação

Na linha 9 deve ser alterado a porta do Tomcat caso a mesma seja diferente do padrão 8080.

Ambientes HTTPS

Atenção

Será necessário criar a pasta ssl no diretório C:/nginx/conf/ e inserir os seus arquivos de certificado conforme imagem abaixo.

106

Insira o conteúdo abaixo dentro do arquivo tomcat-proxy.conf, que fica dentro da pasta C:/nginx/sites-available/, de modo que fique desta maneira:

server {
listen 80;
underscores_in_headers on;

#Caminho da WebContent (webapps/fusion/ caso seja por deploy)
root "C:/Program Files/Apache Software Foundation/Tomcat 10.1.x/webapps/fusion";

#Porta do Tomcat, se não for 8080 alterar aqui.
set $tomcat_port 8080;
set $tomcat_address 127.0.0.1;

location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://$tomcat_address:$tomcat_port;
proxy_read_timeout 1800;
}

# Websocket
location /fusion/websocket {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_pass http://$tomcat_address:$tomcat_port;
proxy_read_timeout 1800;
}
return 301 https://$http_host$request_uri;
}

server {
listen 443 ssl;
underscores_in_headers on;

#Caminho da WebContent (webapps/fusion/ caso seja por deploy)
root "C:/Program Files/Apache Software Foundation/Tomcat 10.1.x/webapps/fusion";

#Arquivos do certificado .crt, .key ou .pem
ssl_certificate "ssl/certificado.crt";
ssl_certificate_key "ssl/certificado.key";
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

#Porta do Tomcat, se não for 8080 alterar aqui.
set $tomcat_port 8080;
set $tomcat_address 127.0.0.1;

location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://$tomcat_address:$tomcat_port;
proxy_read_timeout 1800;
}

#Fusion Websocket
location /fusion/websocket {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_pass http://$tomcat_address:$tomcat_port;
proxy_read_timeout 1800;
}
}
Observação

Na linha 6 e na linha 40 deve ser alterado o caminho do Fusion em duas condições:

Caso esteja compactado (.war), deve setar o caminho do pacote dentro do /webapps/ do Tomcat.
Exemplo: C:/Program Files/Apache Software Foundation/Tomcat 10.1.x/webapps/fusion

Caso esteja extraído, deve setar o caminho direto do pacote.
Exemplo: C:/Neomind/Fusion/WebContent

Observação

Na linha 9 e na linha 50 deve ser alterado a porta do Tomcat caso a mesma seja diferente do padrão 8080.

Observação

Nas linhas 43 e 44, altere o nome dos arquivos .crt e .key de acordo com o nome dos seus arquivos de certificado, respectivamente.

Associando Tomcat ao NGINX

Em seguida, para que essas configurações estejam executando entre o Tomcat e o NGINX, você deverá inserir a porta do NGINX nas configurações do Tomcat.

Para isso você precisará parar o serviço do Tomcat, caso o mesmo esteja em execução, e adicionar o parâmetro proxyPort = "80" (quando for utilizado um ambiente HTTP) ou proxyPort = "443" (quando for utilizado um ambiente HTTPS) no Connector da sua server.xml (que fica na pasta conf do Tomcat).

Caso exista o parâmetro redirectPort no seu Connector, ele deve ser removido, conforme exemplo abaixo:

107

Em seguida, você precisará inserir os parâmetros abaixo antes da tag de Context:

<Valve  className="org.apache.catalina.valves.RemoteIpValve"
internalProxies="127\.0\.[0–1]\.1"
remoteIpHeader="x-forwarded-for"
requestAttributesEnabled="true"
protocolHeader="x-forwarded-proto"
protocolHeaderHttpsValue="https"/>

Comandos básicos para gerenciar o NGINX

Após configurado o server.xml e iniciado o Tomcat novamente, o NGINX também precisa ser iniciado, portanto você deverá abrir o Prompt de Comando do Windows e digitar os seguintes comandos:

cd c:\nginx

Em seguida, para iniciar:

start nginx

Reiniciar:

nginx -s reload

Parar:

nginx -s stop

Validando as Configurações

Nota

Note que a partir de agora a URL de acesso ao Fusion ficará sem a porta do Tomcat configurada.
Exemplo de como era: http://<domain>:8080/fusion
Exemplo de como deve ficar: http://<domain>/fusion ou https://<domain>/fusion

Ao acessá-lo, clique no cadeado localizado no canto esquerdo da URL. Se apresentar a mensagem: "A conexão é segura", significa que o ambiente Fusion está utilizando o certificado SSL, caso tenha sido configurado o NGINX com protocolo HTTPS.

Atenção

Caso possua problemas com a validação do seu certificado SSL, entre em contato com a empresa emissora.

Para validar a comunicação entre o NGINX e o Tomcat, com o Fusion aberto e logado, acesse o DevTools do seu navegador (clicando na tecla F12) e acesse a aba Network.

Em seguida, pressione F5 no seu teclado e depois clique em qualquer requisição.

Após realizar os passos acima, será necessário verificar se o parâmetro Server na aba Headers consta o valor nginx/versão do NGINX, conforme imagem abaixo:

108

Programando a inicialização automática do serviço do NGINX

Para que seja mais simples esse processo de inicialização do NGINX, é possível iniciá-lo junto com o Windows.

Para isso, crie na área de trabalho um arquivo de texto chamado start.bat (observe que sua extensão é .bat) com o conteúdo abaixo:

Nota

No exemplo abaixo, o diretório de instalação do NGINX foi atribuido como C:/nginx/.

@ECHO OFF
REM Iniciar NGINX
tasklist /FI "IMAGENAME eq nginx.exe" 2>NUL | find /I /N "nginx.exe">NUL
IF NOT "%ERRORLEVEL%"=="0" (
REM NGINX não está em execução, então inicia.
c:
cd \nginx
start nginx.exe
ECHO NGINX Iniciado.
) else (
ECHO NGINX já está iniciado.
)

Em seguida, pressione Windows+R ou acesse o "Executar" no Menu Iniciar, em seguida digite shell:startup e pressione Enter, conforme imagem abaixo:

110

Nesse diretório, coloque o seu arquivo .bat, conforme imagem abaixo:

111

Durante o processo, caso surjam dúvidas, a equipe de suporte da Neomind estará à disposição para prestar auxílio.