Índice
Índice |
---|
maxLevel | 4 |
---|
outline | true |
---|
exclude | .*ndice |
---|
style | none |
---|
|
Objetivo
...
O objetivo deste guia é detalhar as configurações necessárias para utilização de proxy reverso NGINX com protocolo HTTPS.
Pré-requisitos
...
- Possuir o NGINX na versão 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 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. Para saber mais sobre a topologia DMZ, clique aqui.
Painel |
---|
|
Estado |
---|
subtle | true |
---|
title | Exemplos de alterações |
---|
|
|
: apontamento 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.
server { Deck of Cards |
---|
|
Card |
---|
default | true |
---|
id | step1 |
---|
label | Passo 1 |
---|
|
- Certifique-se de que a interface de configuração pública esteja preenchida com o IP do servidor (rede interna).
Para - Para isso, abra o arquivo[FLUIG]/appserver/domain/configuration/host.xml, localize a tag <interface name="public"> e verifique o valor da propriedade "value":
Image Modified
Nota |
---|
| Não é recomendada a utilização do recomendado utilizar o valor "0.0.0.0" na interface de configuração pública. |
|
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":
FLUIGIPPORTA_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:
2 TLSv1.33;
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 |
!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK; # Se necessário complemente com outras chaves Ciphers suportadas
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
add_header 'Access-Control-Allow-Origin' 'https://fluig.suaempresa.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 a partir do qual você deseja acessar o Fluig. |
Informações |
---|
| Recomendamos o uso de chaves e protocolos mais modernos e seguros como os indicados no exemplo. Porém, outras chaves também são suportadas: 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 Preencha a diretiva ssl_ciphers do conf.d substituindo pelos valores suportados acima que estejam de acordo com sua política de segurança. As chaves podem ser validadas em https://ciphersuite.info/. E também os protocolos: TLSv1, TLSv1.1 e TLSv1.2 Preencha a diretiva ssl_protocols do conf.d substituindo pelos valores suportados acima que estejam de acordo com sua política de segurança. |
| 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; 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:
| 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: - Na diretiva "proxy-pass", 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 cabeçalho para "proxy" conforme abaixo:
| Bloco de código |
---|
| set_header X-Forwarded-For $proxy_add_x_forwarded_forpass http://[IP_FLUIG]:[PORTA_FLUIG];
proxy_ |
setheader X-Forwarded-Proto $schemesetheader X-Forwarded-Server $host;ciphers HIGH:!aNULL:!MD5;
proxy_pass_ |
setheader X-Forwarded-headers on;
proxy_set_header Host $host |
:$server_portUpgrade $http_upgradeX-Forwarded-For $proxy_add_x_forwarded_for;
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 |
---|
theme | Midnight |
---|
collapse | true |
---|
|
X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Server $host;
|
listen7777ssl;
server_name fluig.suaempresa.comX-Forwarded-Host $host:$server_port;
|
ssl_certificate /etc/nginx/certs/fluig.cert;
ssl_certificate_key /etc/nginx/certs/fluig.key;
proxy_set_header Upgrade $http_upgrade;
|
location/{
proxy_set_header Connection "upgrade"; |
Card |
---|
|
pass http://[IP_FLUIG]:7777; proxy_http_version 1.1 proxy_set_header Host $hostserver_name fluig.suaempresa.com;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_forssl_certificate /etc/nginx/certs/fluig.cert;
|
proxysetheader Upgrade $http_upgradekey /etc/nginx/certs/fluig.key;
|
proxy_set_header Connection "upgrade";
}
}
serverlisten 443 ssl http2 proxy_pass http://[IP_FLUIG]:7777;
|
server_name fluig.suaempresa.comserver_tokens off proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
ssl_certificate /etc/nginx/certs/fluig.cert proxy_set_header Upgrade $http_upgrade;
|
sslcertificatekey /etc/nginx/certs/fluig.keyheader Connection "upgrade";
}
}
server {
listen 443 ssl |
_protocols http2;
server_name fluig.suaempresa.com;
server_tokens off;
|
TLSv1.2 TLSv1.3;ciphers ECDHE-RSA-AES128-GCM-certificate /etc/nginx/certs/fluig.cert;
ssl_certificate_key /etc/nginx/certs/fluig.key;
ssl_protocols 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 / {!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK; # Se necessário complemente com outras chaves Ciphers suportadas
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_ |
pass http://[IP_FLUIG]:[PORTA_FLUIG]proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_ |
sslverify offX-Forwarded-Proto $scheme;
proxy_ |
sslciphers HIGH:!aNULL:!MD5;
X-Forwarded-Server $host;
proxy_ |
pass_request_headers onset_header X-Forwarded-Host $host:$server_port;
proxy_set_header |
Host$host$http_upgrade;
proxy_set_header |
X-Forwarded-For $proxy_add_x_forwarded_for;proxysetheader X-Forwarded-Proto $schemeproxysetheader X-Forwarded-Server $host;set_header X-Forwarded-Host $host:$server_port;
proxy_set_headerUpgrade$http_upgradeset_headerConnection"upgrade";
client_max_body_size 880mclientbodybuffer256k
buffer 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
Nota |
---|
| Dependendo do ambiente (versão, sistema operacional utilizado, etc.) algumas diretivas detalhadas nesta documentação podem estar presentes na sua instalação do NGINX também. Isso causará o erro "directive is duplicate", impossibilitando a inicialização do serviço do NGINX. Caso isso ocorra, verifique qual diretiva será mantida: dos arquivos de configuração do NGINX ou no arquivo de configuração criado com base nessa documentação. |
|
|
Troubleshotting
...
Erros de timeout ou conexão encerrada pelo NGINX.
Informações |
---|
|
Se não for configurado, o padrão de timeout do proxy reverso do NGINX é 60 segundos. A configuração recomendada é 300 segundos – que é o timeout padrão do TOTVS Fluig – podendo ser ajustado para mais ou para menos de acordo com a necessidade. |
server {
Deck of Cards |
---|
|
Card |
---|
default | true |
---|
id | t1-step1 |
---|
label | Passo 1 |
---|
|
|
|
Deck of Cards |
---|
|
Abra o arquivo de configuração do NGINX - /etc/nginx/conf.d - e inclua as diretivas de timeout no contexto "server" > "location /" conforme abaixo: Card |
---|
default | true |
---|
id | t1-step1 |
---|
label | Passo 1 |
---|
|
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 "" estará desta forma |
collapse | true |
---|
listen7777 ssl proxy_connect_timeout 300;
|
server_name fluig.suaempresa.comssl_certificate /etc/nginx/certs/fluig.certssl_certificate_key/etc/nginx/certs/fluig.key;
location/{
Card |
---|
|
proxy_pass http://[IP_FLUIG]:7777; proxy_http_version 1.1 proxy_set_header Host $hostserver_name fluig.suaempresa.com;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade /etc/nginx/certs/fluig.cert;
|
proxysetheader Connection "upgrade";
key /etc/nginx/certs/fluig.key;
|
}
}
server{listen443 ssl http2;servername fluig.suaempresa.compass http://[IP_FLUIG]:7777;
|
server_tokens off
ssl_certificate /etc/nginx/certs/fluig.cert proxy_set_header Host $host;
|
sslcertificate_key /etc/nginx/certs/fluig.keyset_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
ssl_protocols proxy_set_header Upgrade $http_upgrade;
|
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 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.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK; # Se necessário complemente com outras chaves Ciphers suportadas
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 |
600600600 600300;
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 ao invés de apenas aumentar o tempo de timeout. Se desejar, entre em contato com o seu ESN e solicite uma proposta de consultoria investigativa Fluig. |
|
Ocultar informações no cabeçalho HTTP
...
Para prevenir vulnerabilidades, é importante que as informações não fiquem expostas no cabeçalho HTTP. Clique aqui e saiba como ocultá-las.