diff --git a/nginx/nginx.conf b/nginx/nginx.conf deleted file mode 100644 index eca24d0..0000000 --- a/nginx/nginx.conf +++ /dev/null @@ -1,148 +0,0 @@ -# --- Configurações Gerais --- -# Define o utilizador e o grupo com que os processos de trabalho do Nginx serão executados. -user www-data; -# Define o número de processos de trabalho. 'auto' usa um por núcleo de CPU. -worker_processes auto; -# Aumenta o limite de ficheiros abertos (file descriptors) para os processos de trabalho. -# Essencial para servidores com muitas conexões ou que escutam em muitas portas. -worker_rlimit_nofile 65535; -# Ficheiro onde o ID do processo principal é guardado. -pid /run/nginx/pid; -# Caminho para o log de erros global do Nginx. -error_log /var/log/nginx/error.log; -# Carrega os módulos dinâmicos do Nginx (como o 'stream'). -include /etc/nginx/modules-enabled/*.conf; - -# --- Bloco de Eventos --- -# Configura como o Nginx lida com as conexões. -events { - # Número máximo de conexões que cada processo de trabalho pode gerir. - worker_connections 16384; - # Permite que um processo de trabalho aceite todas as novas conexões de uma só vez. - multi_accept on; -} - -# ============================================================================== -# BLOCO HTTP: Para todo o tráfego Web (Sites, APIs, etc.) -# ============================================================================== -http { - # --- Configurações de Cache --- - # Define as zonas de armazenamento em disco para os diferentes tipos de cache. - proxy_cache_path /var/cache/nginx/zabbix_cache levels=1:2 keys_zone=zabbix_cache:10m max_size=1g inactive=60m use_temp_path=off; - proxy_cache_path /var/cache/nginx/api_cache levels=1:2 keys_zone=api_cache:10m max_size=100m inactive=5m use_temp_path=off; - proxy_cache_path /var/cache/nginx/exchange_private_cache levels=1:2 keys_zone=exchange_private_cache:20m max_size=500m inactive=10m use_temp_path=off; - - # --- Configurações Básicas e de Performance --- - sendfile on; - tcp_nopush on; - types_hash_max_size 2048; - # Esconde a versão do Nginx dos cabeçalhos HTTP por segurança. - server_tokens off; - - # --- Ficheiros de Mime Type --- - include /etc/nginx/mime.types; - default_type application/octet-stream; - - # --- Otimizações de Proxy Reverso e Buffers --- - client_body_buffer_size 128k; - client_max_body_size 10G; # Limite de upload - proxy_buffer_size 16k; - proxy_buffers 8 16k; - proxy_busy_buffers_size 32k; - - # --- Otimizações de Keep-Alive e Timeouts --- - keepalive_timeout 65s; - keepalive_requests 1000; - send_timeout 10s; - - # --- Configurações de Segurança (WAF) --- - modsecurity on; - modsecurity_rules_file /etc/nginx/modsecurity.conf; - - # --- Configurações do GeoIP2 --- - geoip2 /usr/share/GeoIP/GeoLite2-City.mmdb { - $geoip2_country_code country iso_code; - $geoip2_country_name country names en; - $geoip2_region_name subdivisions 0 names en; - $geoip2_city_name city names en; - $geoip2_latitude location latitude; - $geoip2_longitude location longitude; - $geoip2_asn autonomous_system_number; - $geoip2_isp autonomous_system_organization; - } - - # --- Configurações de Logging --- - # Define o nosso formato de log JSON detalhado. - log_format detailed_proxy escape=json '{"@timestamp":"$time_iso8601","remote_addr":"$remote_addr","remote_user":"$remote_user","request":"$request","method":"$request_method","uri":"$uri","args":"$args","status":$status,"request_length":$request_length,"body_bytes_sent":$body_bytes_sent,"request_time":"$request_time","upstream_addr":"$upstream_addr","upstream_status":"$upstream_status","upstream_response_time":"$upstream_response_time","cache_status":"$upstream_cache_status","http_referer":"$http_referer","http_user_agent":"$http_user_agent","http_x_forwarded_for":"$http_x_forwarded_for","http_accept_language":"$http_accept_language","http_cookie":"$http_cookie","http_origin":"$http_origin","http_host":"$http_host","server_name":"$server_name","scheme":"$scheme","ssl_protocol":"$ssl_protocol","ssl_cipher":"$ssl_cipher","ssl_curves":"$ssl_curves","ssl_session_reused":"$ssl_session_reused","ssl_server_name":"$ssl_server_name","ssl_client_s_dn":"$ssl_client_s_dn","ssl_client_i_dn":"$ssl_client_i_dn","ssl_client_verify":"$ssl_client_verify","ssl_client_serial":"$ssl_client_serial","ssl_client_v_start":"$ssl_client_v_start","ssl_client_v_end":"$ssl_client_v_end","geoip_country_code":"$geoip2_country_code","geoip_country_name":"$geoip2_country_name","geoip_region_name":"$geoip2_region_name","geoip_city_name":"$geoip2_city_name","geoip_latitude":"$geoip2_latitude","geoip_longitude":"$geoip2_longitude","geoip_asn":"$geoip2_asn","geoip_isp":"$geoip2_isp"}'; - # Define este formato como o padrão para todos os sites. - access_log /var/log/nginx/access.log detailed_proxy; - - # --- Configurações de Gzip --- - gzip on; - gzip_vary on; - gzip_proxied any; - gzip_comp_level 6; - gzip_buffers 16 8k; - gzip_http_version 1.1; - gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; - - # --- Carregar Ficheiros de Configuração dos Sites --- - # IMPORTANTE: Os ficheiros aqui dentro precisarão de ser alterados! (Ver próximo passo) - include /etc/nginx/conf.d/*.conf; - include /etc/nginx/sites-enabled/*; -} - -# ============================================================================== -# BLOCO STREAM: O ÚNICO GESTOR DAS PORTAS TCP/UDP PÚBLICAS -# ============================================================================== -stream { - # --- MAPEAMENTO DE HOSTNAMES (A "INTELIGÊNCIA" DO ROUTING) --- - # Este bloco 'map' é executado para cada nova conexão na porta 443. - # Ele olha para o nome do site pedido pelo cliente ($ssl_preread_server_name) - # e decide para qual "backend" o tráfego deve ser enviado. - map $ssl_preread_server_name $backend_https { - # Se o cliente pedir por "antispam.itguys.com.br", envie para o backend do PMG. - antispam.itguys.com.br proxmox_mail_gateway; - - # Para QUALQUER OUTRO nome de site, envie para o backend do Nginx HTTP. - default nginx_http_backend; - } - - # --- Definição dos Backends --- - # Backend para o Proxmox Mail Gateway (SSL Passthrough) - upstream proxmox_mail_gateway { - server 172.16.150.1:8006; - } - - # Backend que aponta para o próprio Nginx (módulo http), numa porta interna. - upstream nginx_http_backend { - server 127.0.0.1:8443; - } - - # --- Servidor Principal para a Porta 443 --- - # Este é agora o único 'server' a escutar na porta 443 pública. - server { - listen 443; - listen [::]:443; - - # Ativa a "leitura prévia" do SSL para obter o nome do site sem desencriptar. - ssl_preread on; - - # Usa o resultado do nosso 'map' para encaminhar a conexão. - proxy_pass $backend_https; - } - - # --- Outras configurações de stream que já temos (telefonia) --- - server { - listen 5060; - proxy_pass 172.16.254.130:5060; - } - server { - listen 5060 udp; - proxy_pass 172.16.254.130:5060; - } - server { - listen 10000-20000 udp; - proxy_pass 172.16.254.130:$server_port; - } -}