# Gerado por nginxconfig.io # Especifica o usuário que executará os processos do servidor Nginx. Neste caso, # está definido como www-data, que é um usuário comum usado por muitos servidores # web para garantir a segurança. user www-data; # Caminho do arquivo que armazena o PID (Process ID) do processo principal do servidor Nginx. pid /run/nginx.pid; # Define o número de processos trabalhadores (workers) que o Nginx irá utilizar para atender # as requisições. O valor "auto" significa que o Nginx ajustará automaticamente o número de # processos com base no número de núcleos do processador disponíve worker_processes auto; # Limita o número máximo de arquivos que um processo trabalhador pode abrir. No exemplo, # está definido como 65535. worker_rlimit_nofile 65535; # Coarragando modulos include /etc/nginx/modules-enabled/*.conf; # Bloco de configuração para ajustes relacionados a eventos de rede. events { # Permite que cada processo trabalhador aceite várias conexões de rede simultaneamente, # melhorando a capacidade de atendimento em situações de alto tráfego multi_accept on; # Define o número máximo de conexões simultâneas que cada processo trabalhador pode lidar. worker_connections 65535; } # Bloco de configuração das opções do servidor HTTP http { # Define o conjunto de caracteres (charset) padrão para o servidor. charset utf-8; # Ativa o mecanismo "sendfile" para otimizar a transferência de arquivos estáticos. sendfile on; # tcp_nopush e tcp_nodelay Otimiza o envio de dados em conexões TCP. tcp_nopush on; tcp_nodelay on; # Desativa a exibição da versão do servidor no cabeçalho HTTP. server_tokens off; # Evita o registro de erros para solicitações de arquivos que não foram encontrados (404). log_not_found off; # types_hash_max_size e types_hash_bucket_size: Configuração para otimização no tratamento # de tipos de arquivos. types_hash_max_size 2048; types_hash_bucket_size 64; # Limita o tamanho máximo das requisições POST enviadas pelo cliente. client_max_body_size 16M; # MIME # Inclui o arquivo "mime.types", que associa extensões de arquivo a tipos MIME. include mime.types; # Define o tipo MIME padrão para arquivos desconhecidos. default_type application/octet-stream; # Logging access_log off; error_log /dev/null; # SSL # Define o tempo de vida das sessões SSL. Neste caso, está configurado para 1 dia (1d). # Isso significa que o cliente poderá reutilizar a sessão SSL por até 1 dia, o que pode # melhorar o desempenho das conexões subsequentes. ssl_session_timeout 1d; # Configura o cache das sessões SSL para evitar a necessidade de negociar uma nova sessão # SSL a cada requisição. O cache é compartilhado entre os processos trabalhadores do Nginx # e é válido por 10 minutos (10m). ssl_session_cache shared:SSL:10m; # Desativa o uso dos "session tickets" nas sessões SSL. Os "session tickets" são uma extensão # TLS que permite aos clientes armazenar informações de sessão e reutilizá-las para retomar # a conexão. Neste caso, eles estão desabilitados. ssl_session_tickets off; # Especifica o caminho para o arquivo "dhparam.pem", que contém os parâmetros Diffie-Hellman # (DH) usados para negociação de chaves seguras em ciphersuites baseados em # DHE (Diffie-Hellman Ephemeral). ssl_dhparam /etc/nginx/dhparam.pem; # Configuração intermediária do Mozilla Especifica os protocolos SSL/TLS que o servidor Nginx # suporta. Neste caso, estão configurados para suportar apenas as versões TLS 1.2 e TLS 1.3, # que são as versões mais seguras e recomendadas atualmente ssl_protocols TLSv1.2 TLSv1.3; # Define as ciphersuites (combinações de algoritmos criptográficos) que o servidor Nginx aceita # para a negociação de chaves durante o handshake SSL/TLS. Essas ciphersuites foram especificadas # para suportar criptografia forte e são recomendadas pelas configurações intermediárias da Mozilla. ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; # OCSP Stapling # Ativa o mecanismo de OCSP Stapling, que permite ao servidor obter e armazenar antecipadamente a # resposta OCSP (Online Certificate Status Protocol) do certificado SSL. Isso ajuda a melhorar o # desempenho e a segurança da validação do certificado. ssl_stapling on; # Ativa a verificação da validade das respostas OCSP pelo servidor. Isso garante que as informações # de status do certificado sejam atualizadas e válidas. ssl_stapling_verify on; # Especifica os servidores DNS que serão usados para resolver os endereços de host na verificação OCSP. # Neste caso, os servidores DNS são definidos com os endereços abaixo. resolver 1.1.1.1 1.0.0.1 8.8.8.8 8.8.4.4 208.67.222.222 208.67.220.220 valid=60s; # Define o tempo máximo que o servidor Nginx aguardará por uma resposta do servidor DNS na verificação OCSP. # Neste caso, está configurado para 2 segundos. resolver_timeout 2s; # MAP # A diretiva map permite criar uma associação entre os valores do cabeçalho "Upgrade" recebidos do cliente e # os valores que devem ser enviados no cabeçalho "Connection" para o servidor upstream (o servidor WebSocket real). # Essa associação é definida com pares de chave-valor. # Cabeçalho de conexão para proxy reverso WebSocket # Essa parte da configuração é responsável por definir o cabeçalho de conexão ("Connection header") para o # proxy reverso de WebSocket no servidor Nginx. map $http_upgrade $connection_upgrade { default upgrade; "" close; } # Essa parte da configuração utiliza a diretiva map para criar uma associação entre o endereço IP do cliente # (variável $remote_addr) e um valor que será usado posteriormente para o cabeçalho "Forwarded" quando o Nginx # atuar como proxy reverso. map $remote_addr $proxy_forwarded_elem { # Os endereços IPv4 podem ser enviados como estão ~^[0-9.]+$ "for=$remote_addr"; # Os endereços IPv6 precisam estar entre colchetes e entre aspas ~^[0-9A-Fa-f:.]+$ "for=\"[$remote_addr]\""; # Os nomes de soquete de domínio Unix não podem ser representados na sintaxe RFC 7239 # Se o endereço IP do cliente não corresponder aos padrões IPv4 ou IPv6 acima, o valor # associado será "for=unknown". Isso pode acontecer, por exemplo, quando o endereço IP # é um nome de domínio em vez de um endereço IP válido default "for=unknown"; } # Essa parte da configuração utiliza a diretiva map para processar o cabeçalho HTTP "Forwarded" # recebido do cliente e criar o cabeçalho "Proxy-Add-Forwarded" para o proxy reverso. # Se o cabeçalho "Forwarded" passar na validação sintática da expressão regular, ele será # concatenado com o valor de $proxy_forwarded_elem (criado anteriormente na outra configuração), # adicionando assim as informações corretas ao cabeçalho "Proxy-Add-Forwarded". # Se o cabeçalho "Forwarded" não passar na validação sintática, o valor de $proxy_forwarded_elem # será usado para o cabeçalho "Proxy-Add-Forwarded". # O cabeçalho "Proxy-Add-Forwarded" é usado para transmitir informações sobre a origem da solicitação # para o servidor upstream (servidor de destino) quando o Nginx atua como proxy reverso. Essa configuração # ajuda a garantir que o cabeçalho "Forwarded" seja tratado corretamente, mesmo em casos em que o cliente # não forneça um cabeçalho "Forwarded" válido. map $http_forwarded $proxy_add_forwarded { # If the incoming Forwarded header is syntactically valid, append to it "~^(,[ \\t]*)*([!#$%&'*+.^_`|~0-9A-Za-z-]+=([!#$%&'*+.^_`|~0-9A-Za-z-]+|\"([\\t \\x21\\x23-\\x5B\\x5D-\\x7E\\x80-\\xFF]|\\\\[\\t \\x21-\\x7E\\x80-\\xFF])*\"))?(;([!#$%&'*+.^_`|~0-9A-Za-z-]+=([!#$%&'*+.^_`|~0-9A-Za-z-]+|\"([\\t \\x21\\x23-\\x5B\\x5D-\\x7E\\x80-\\xFF]|\\\\[\\t \\x21-\\x7E\\x80-\\xFF])*\"))?)*([ \\t]*,([ \\t]*([!#$%&'*+.^_`|~0-9A-Za-z-]+=([!#$%&'*+.^_`|~0-9A-Za-z-]+|\"([\\t \\x21\\x23-\\x5B\\x5D-\\x7E\\x80-\\xFF]|\\\\[\\t \\x21-\\x7E\\x80-\\xFF])*\"))?(;([!#$%&'*+.^_`|~0-9A-Za-z-]+=([!#$%&'*+.^_`|~0-9A-Za-z-]+|\"([\\t \\x21\\x23-\\x5B\\x5D-\\x7E\\x80-\\xFF]|\\\\[\\t \\x21-\\x7E\\x80-\\xFF])*\"))?)*)?)*$" "$http_forwarded, $proxy_forwarded_elem"; # Otherwise, replace it default "$proxy_forwarded_elem"; } # Carregar configurações include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; }