Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Ajustes chamado FFDN-7926.


Índice

Índice
maxLevel4
outlinetrue
exclude.*ndice
stylenone


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
    borderColor#ebecf0

    Estado
    subtletrue
    titleExemplos 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
idnginx-settings
Card
defaulttrue
idstep1
labelPasso 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
titleAtenção:Importante!

Não é recomendada a utilização do recomendado utilizar o valor "0.0.0.0" na interface de configuração pública.

Card
idstep2
labelPasso 2



Card
idstep3
labelPasso 3


  • 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
idstep4
labelPasso 4


  • 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, na diretiva "proxy-pass". A porta padrão do Realtime é 7777, caso não tenha sido alterada.

      Bloco de código
      themeMidnight
      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
    • REALTIME]:[
IP
    • PORTA_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
idstep5
labelPasso 5


  • 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
      languagebash
      themeMidnight
      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
    • 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
titleAtenção!

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
titleImportante!

Substitua "fluig.suaempresa.com" pelo endereço a partir do qual você deseja acessar o Fluig.

Informações
titleNota:

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
idstep6
labelPasso 6


  • 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
      themeMidnight
          location / {
Card
idstep6
labelPasso 6

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
themeMidnight

        proxy_
set_header X-Forwarded-For $proxy_add_x_forwarded_for
    • pass          http://[IP_FLUIG]:[PORTA_FLUIG];
              proxy_
set
    • ssl_
header X-Forwarded-Proto $scheme
    • verify    off;
              proxy_
set
    • ssl_
header X-Forwarded-Server $host;
    • ciphers   HIGH:!aNULL:!MD5;
      
              proxy_pass_
set
    • request_
header X-Forwarded-
    • headers on;
              proxy_set_header Host $host
:$server_port
    • ;
              proxy_set_header 
Upgrade $http_upgrade
    • X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header 
Connection "upgrade";
Card
idstep7
labelPasso 7

Após efetuar os passos anteriores, o arquivo "/etc/nginx/conf.d" estará desta forma:

Bloco de código
themeMidnight
collapsetrue
X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Server $host;
    
listen
    •  
7777
    •  
ssl;
    •   proxy_set_header 
server_name fluig.suaempresa.com
    • X-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
idstep7
labelPasso 7


  • Após efetuar os passos anteriores, o arquivo "/etc/nginx/conf.d" estará desta forma:

    Bloco de código
    themeMidnight
    server {
pass http://[IP_FLUIG]:7777;
  • 
        
proxy_http_version 1.1
  • listen 7777 ssl;
        
proxy_set_header Host $host
  • server_name fluig.suaempresa.com;
        
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for
  • ssl_certificate     /etc/nginx/certs/fluig.cert;
        
proxy
  • ssl_
set
  • certificate_
header Upgrade $http_upgrade
  • key /etc/nginx/certs/fluig.key;
        
proxy_set_header Connection "upgrade";
  • 
        
} } server
  • location / {
        
listen 443 ssl http2
  • 	proxy_pass http://[IP_FLUIG]:7777;
        
server_name fluig.suaempresa.com
  • 	proxy_http_version 1.1;
        
server_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;
        
ssl
  • 	proxy_
certificate
  • set_
key /etc/nginx/certs/fluig.key
  • header Connection "upgrade";
        }
    }
    
    server {
        listen 443 ssl
_protocols
  •  http2;
        server_name fluig.suaempresa.com;
        server_tokens off;
      
TLSv1.2 TLSv1.3;
  •   
        ssl_
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
  • header Host $host;
            
http://[IP_FLUIG]:[PORTA_FLUIG]
  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_
ssl
  • set_
verify
  • header 
off
  • X-Forwarded-Proto $scheme;
            proxy_
ssl
  • set_
ciphers
  • header 
HIGH:!aNULL:!MD5;
  • X-Forwarded-Server $host;
            proxy_
pass_request_headers on
  • set_header X-Forwarded-Host $host:$server_port;
            proxy_set_header 
Host
  • Upgrade 
$host
  • $http_upgrade;
            proxy_set_header 
X-Forwarded-For $proxy_add_x_forwarded_for;
  • Connection "upgrade";
    
            
proxy
  • client_max_
set
  • body_
header X-Forwarded-Proto $scheme
  • size       880m;
            
proxy
  • client_body_
set
  • buffer_
header X-Forwarded-Server $host;
  • size    256k;
    
            proxy_
set_header X-Forwarded-Host $host:$server_port;
  • buffer_size        
proxy_set_header
  •  
Upgrade
  •  
$http_upgrade
  • 8k;
            proxy_
set_header
  • buffers 
Connection
  •  
"upgrade";
  •         
client_max_body_size
  •     8 
880m
  • 32k;
            
client
  • proxy_
body
  • busy_
buffer
  • buffers_size    
256k
  • 64k;
    
  •         proxy_
buffer
  • temp_file_write_size 
8k
  • 64k;
        
proxy_buffers 8 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } }
  • }
    }


Card
idstep8
labelPasso 8


  • Reinicie os serviços do Fluig e do NGINX em ambos os servidores.

Troubleshotting

  • Erros de timeout ou conexão encerrada pelo NGINX
Nota
titleImportante!

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
titleNota:

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
idnginx-troubleshooting1
Card
defaulttrue
idt1-step1
labelPasso 1


  • Abra o arquivo de configuração do NGINX -

Deck of Cards
idnginx-troubleshooting1

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
defaulttrue
idt1-step1
labelPasso 1
Bloco de código
themeMidnight
        proxy_connect_timeout	600;
        proxy_send_timeout 		600;
        proxy_read_timeout 		600;
        send_timeout            600;
Card
idt1-step2
labelPasso 2
Após incluir as diretivas de timeout, o arquivo "
  • /etc/nginx/conf.d

" estará desta forma
  • - e inclua as diretivas de timeout no contexto "server" > "location /" conforme abaixo:

    Bloco de código
    themeMidnight
collapsetrue
      
listen
  •  
7777 ssl
  •  proxy_connect_timeout	300;
         
server_name fluig.suaempresa.com
  •    proxy_send_timeout 		300;
        
ssl_certificate
  •     
/etc/nginx/certs/fluig.cert
  • proxy_read_timeout 		300;
        
ssl_certificate_key
  •  
/etc/nginx/certs/fluig.key;
  •    send_timeout 
  •     
location
  •  
/
  •  
{
  •      300;


Card
idt1-step2
labelPasso 2


  • Após incluir as diretivas de timeout, o arquivo "/etc/nginx/conf.d" estará desta forma:

    Bloco de código
    themeMidnight
    server {
proxy_pass http://[IP_FLUIG]:7777;
  • 
        
proxy_http_version 1.1
  • listen 7777 ssl;
        
proxy_set_header Host $host
  • server_name fluig.suaempresa.com;
        
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  • ssl_certificate    
proxy_set_header Upgrade $http_upgrade
  •  /etc/nginx/certs/fluig.cert;
        
proxy
  • ssl_
set
  • certificate_
header Connection "upgrade";
  • key /etc/nginx/certs/fluig.key;
       
} } server
  •  
{
  • 
        
listen
  • location 
443 ssl http2;
  • / {
        
server
  • 	proxy_
name fluig.suaempresa.com
  • pass http://[IP_FLUIG]:7777;
        
server_tokens off
  • 	proxy_http_version 1.1;
        
ssl_certificate /etc/nginx/certs/fluig.cert
  • 	proxy_set_header Host $host;
        
ssl
  • 	proxy_
certificate_key /etc/nginx/certs/fluig.key
  • set_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	
600
  • 300;
            proxy_send_timeout 		
600
  • 300;
            proxy_read_timeout 		
600
  • 300;
            send_timeout            
600
  • 300;
    
            proxy_buffer_size          8k;
            proxy_buffers              8 32k;
            proxy_busy_buffers_size    64k;
            proxy_temp_file_write_size 64k;
        }
    }


Card
idt1-step3
labelPasso 3


  • Reinicie os serviços NGINX para aplicar a alteração realizada.
Nota
titleAtenção:

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.