Índice
Índice |
---|
maxLevel | 4 |
---|
outline | true |
---|
exclude | .*ndice |
---|
style | none |
---|
|
Objetivo
O objetivo deste guia é apresentar os procedimentos necessários para a configuração detalhar as configurações necessárias para utilização de proxy reverso NGINX com protocolo HTTPS.
Pré-requisitos
Ter o NGINX instalado. Documentação do NGINX disponível NGINX .
- NGINX 1.20.1 ou superior instalado. Detalhes de instalação e configuração do NGINX estão disponíveis na documentação oficial.
- Possuir um host no DNS configurado para a plataforma, com domínio específico.
- Possuir um certificado digital válido;
Recomendações
- Instalar o NGINX em um servidor separado do servidor onde o Fluig está instalado.
- Faça as alterações necessárias na topologia utilizada, para que o acesso funcione corretamente após implantar o proxy reverso.
Exemplos de alterações: apontamento de IP na rede interna, liberação de portas, alteração de endereço de acesso do Fluig (usuário wcmadmin)
Configurando o NGINX como proxy reverso, com HTTPS
...
Siga o passo a passo, conforme descrito abaixo.
Deck of Cards |
---|
id | Passo a passo nginx-settings |
---|
|
Card |
---|
default | true |
---|
id | step1 |
---|
label | Passo 1 |
---|
| ATENÇÃO: Nesta documentação levamos em consideração que o cliente utiliza o Fluig e o NGINX em servidores distintos. | Certifique-se de que o acesso público ao Fluig esteja configuradoque a interface de configuração pública esteja preenchida com o IP do servidor (rede interna). Para isso, abra o arquivo host.xml localizado em [instalacao_fluig[FLUIG]/appserver/domain/configuration/host.xml e configure o IP , localize a tag <interface name="public"> e verifique o valor da propriedade "value": Image Added
Nota |
---|
| Não é recomendada a utilização do valor "0.0.0.0 | " na interface de configuração pública | : |
Card |
---|
label | Passo 3 - ANTIGO, REMOVER |
---|
| No servidor NGINX, utilize os certificados e o arquivo de configuração gerado para realizar a seguinte configuração: - Cole Salve os certificados em uma pasta de sua preferência. Será utilizado neste exemplo a pasta /etc/nginx/certs
- Cole o arquivo de configuração gerado no Passo 2 em /etc/nginx/conf.d
- Realize os seguintes ajustes no arquivo de configuração gerado (colado anteriormente em /etc/nginx/conf.d):
- Adicione a configuração para a porta 7777 referente ao RealTime.
- Ajuste os endereços do certificado e chave conforme os locais que você escolheu.
- Ajuste o proxy_pass para o endereço IP do servidor onde está instalado o Fluig e mantenha a porta 8080.
Image Modified
|
Card |
---|
| No servidor NGINX, utilize os certificados e o arquivo gerado para realizar a seguinte configuração: - Salve os certificados na pasta /etc/nginx/certs
- Cole o arquivo de configuração gerado no Passo 2 em /etc/nginx/conf.d
|
Card |
---|
| Adicione as diretivas para configuração das notificações em tempo real (serviço Realtime) no arquivo gerado no Passo 3 - "/etc/nginx/conf.d": - Informe o DNS do servidor na diretiva "server_name"
- Informe o caminho completo dos arquivos de certificado (arquivo .cert) na diretiva ssl_certificate
- Informe o caminho completo dos arquivos de certificado (arquivo .key) na diretiva ssl_certificate_key
- Informe o IP e a porta onde o serviço do Realtime está em execução. A porta padrão do Realtime é 7777, caso não tenha sido alterada
Bloco de código |
---|
| server {
listen 7777 ssl;
server_name fluig.suaempresa.com;
ssl_certificate /etc/nginx/certs/fluig.cert;
ssl_certificate_key /etc/nginx/certs/fluig.key;
location / {
proxy_pass http://[IP_FLUIG]:[IP_REALTIME];
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
} |
|
Card |
---|
| No arquivo "/etc/nginx/conf.d", no contexto "server", que estará ouvindo a porta 443, configure as seguintes diretivas: - Informe o caminho completo dos arquivos de certificado (arquivo .cert) na diretiva ssl_certificate;
- Informe o caminho completo dos arquivos de certificado (arquivo .key) na diretiva ssl_certificate_key;
- Oculte a versão do NGINX no cabeçalho de resposta das requisições, informando o valor "off" na diretiva "server_tokens"
- Adicione as diretivas de cabeçalho ("add_header") conforme abaixo:
Bloco de código |
---|
language | bash |
---|
theme | Midnight |
---|
| server {
listen 443 ssl http2;
server_name fluig.suaempresa.com;
server_tokens off;
ssl_certificate /etc/nginx/certs/fluig.cert;
ssl_certificate_key /etc/nginx/certs/fluig.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
add_header 'Access-Control-Allow-Origin' 'https://fluig.empresa.com/';
add_header 'Access-Control-Allow-Methods' 'GET, PUT, POST, OPTIONS, DELETE';
add_header 'Access-Control-Request-Method' 'GET, PUT, POST, OPTIONS, DELETE';
add_header 'Access-Control-Allow-Headers' 'Content-Type, X-Requested-With, accept-version';
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always; |
Nota |
---|
| Substitua "fluig.suaempresa.com" pelo endereço que você deseja acessar o Fluig |
|
Card |
---|
| No contexto "server", que estará ouvindo a porta 443, adicione as seguintes diretivas no contexto "location /", no arquivo "/etc/nginx/conf.d", conforme abaixo: - Informe o IP do servidor do Fluig e a porta definida na instalação da plataforma (a porta padrão é 8080)
- Adicione as diretivas de "proxy" conforme abaixo:
Bloco de código |
---|
| location / {
proxy_pass http://[IP_FLUIG]:[PORTA_FLUIG];
proxy_ssl_verify off;
proxy_ssl_ciphers HIGH:!aNULL:!MD5;
proxy_pass_request_headers on;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade"; |
|
Card |
---|
| Após efetuar os passos anteriores, o arquivo "/etc/nginx/conf.d" estará desta forma: Bloco de código |
---|
| server {
listen 7777 ssl;
server_name fluig.suaempresa.com;
ssl_certificate /etc/nginx/certs/fluig.cert;
ssl_certificate_key /etc/nginx/certs/fluig.key;
location / {
proxy_pass http://[IP_FLUIG]:7777;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
server {
listen 443 ssl http2;
server_name fluig.suaempresa.com;
server_tokens off;
ssl_certificate /etc/nginx/certs/fluig.cert;
ssl_certificate_key /etc/nginx/certs/fluig.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
add_header 'Access-Control-Allow-Origin' 'https://fluig.empresa.com/';
add_header 'Access-Control-Allow-Methods' 'GET, PUT, POST, OPTIONS, DELETE';
add_header 'Access-Control-Request-Method' 'GET, PUT, POST, OPTIONS, DELETE';
add_header 'Access-Control-Allow-Headers' 'Content-Type, X-Requested-With, accept-version';
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
location / {
proxy_pass http://[IP_FLUIG]:[PORTA_FLUIG];
proxy_ssl_verify off;
proxy_ssl_ciphers HIGH:!aNULL:!MD5;
proxy_pass_request_headers on;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
client_max_body_size 880m;
client_body_buffer_size 256k;
proxy_buffer_size 8k;
proxy_buffers 8 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
} |
|
Card |
---|
| Reinicie os serviços do Fluig e do NGINX em ambos os servidores. |
|
Troubleshotting
- Erros de timeout ou conexão encerrada pelo NGINX
Deck of Cards |
---|
|
Card |
---|
| Abra o arquivo de configuração do NGINX - /etc/nginx/conf.d - e inclua as diretivas de timeout no contexto "server" > "location /" conforme abaixo:
Bloco de código |
---|
| proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600; |
Card |
---|
| Após incluir as diretivas de timeout, o arquivo "/etc/nginx/conf.d" estará desta forma:
Bloco de código |
---|
| server {
listen 7777 ssl;
server_name fluig.suaempresa.com;
ssl_certificate /etc/nginx/certs/fluig.cert;
ssl_certificate_key /etc/nginx/certs/fluig.key;
location / {
proxy_pass http://[IP_FLUIG]:7777;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
server {
listen 443 ssl http2;
server_name fluig.suaempresa.com;
server_tokens off;
ssl_certificate /etc/nginx/certs/fluig.cert;
ssl_certificate_key /etc/nginx/certs/fluig.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
add_header 'Access-Control-Allow-Origin' 'https://fluig.empresa.com/';
add_header 'Access-Control-Allow-Methods' 'GET, PUT, POST, OPTIONS, DELETE';
add_header 'Access-Control-Request-Method' 'GET, PUT, POST, OPTIONS, DELETE';
add_header 'Access-Control-Allow-Headers' 'Content-Type, X-Requested-With, accept-version';
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
location / {
proxy_pass http://[IP_FLUIG]:[PORTA_FLUIG];
proxy_ssl_verify off;
proxy_ssl_ciphers HIGH:!aNULL:!MD5;
proxy_pass_request_headers on;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
client_max_body_size 880m;
client_body_buffer_size 256k;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
proxy_buffer_size 8k;
proxy_buffers 8 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
} |
Card |
---|
| Reinicie os serviços NGINX para aplicar a alteração realizada. |
|
|
Nota |
---|
| Caso o problema de timeout persista após aplicar a configuração acima, é necessário avaliar o que está ocorrendo invés de aumentar o tempo de timeout. Se desejar, entre em contato com o seu ESN e solicite uma proposta de consultoria investigativa. |
|