[Auto-Sync] Atualização das configurações em srvproxy001.itguys.com.br - 2025-09-16 08:54:37

This commit is contained in:
srvproxy001.itguys.com.br 2025-09-16 08:54:37 -03:00
parent f227073507
commit e8ed42c660
1 changed files with 114 additions and 116 deletions

View File

@ -1,64 +1,65 @@
# --- Configurações Gerais ---
# Define o utilizador e o grupo com que os processos de trabalho do Nginx serão executados.
user www-data; user www-data;
# Define o número de processos de trabalho. 'auto' usa um por núcleo de CPU.
worker_processes auto; 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; worker_rlimit_nofile 65535;
pid /run/nginx.pid; # 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; error_log /var/log/nginx/error.log;
# Carrega os módulos dinâmicos do Nginx (como o 'stream').
include /etc/nginx/modules-enabled/*.conf; include /etc/nginx/modules-enabled/*.conf;
# --- Bloco de Eventos ---
# Configura como o Nginx lida com as conexões.
events { events {
# Número máximo de conexões que cada processo de trabalho pode gerir.
worker_connections 16384; worker_connections 16384;
# Permite que um processo de trabalho aceite todas as novas conexões de uma vez.
multi_accept on; multi_accept on;
} }
# ==============================================================================
# BLOCO HTTP: Para todo o tráfego Web (Sites, APIs, etc.)
# ==============================================================================
http { http {
#Configuraçoes de Cache # --- 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/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/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; 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 ---
# Basic Settings
##
sendfile on; sendfile on;
tcp_nopush on; tcp_nopush on;
types_hash_max_size 2048; types_hash_max_size 2048;
# Esconde a versão do Nginx dos cabeçalhos HTTP por segurança.
server_tokens off; server_tokens off;
# server_names_hash_bucket_size 64; # --- Ficheiros de Mime Type ---
# server_name_in_redirect off;
include /etc/nginx/mime.types; include /etc/nginx/mime.types;
default_type application/octet-stream; default_type application/octet-stream;
## # --- Otimizações de Proxy Reverso e Buffers ---
# Otimizações de Proxy Reverso e Buffers
##
client_body_buffer_size 128k; client_body_buffer_size 128k;
client_max_body_size 10G; # Ajuste conforme a necessidade de upload da sua aplicação client_max_body_size 10G; # Limite de upload
proxy_buffer_size 16k; proxy_buffer_size 16k;
proxy_buffers 8 16k; proxy_buffers 8 16k;
proxy_busy_buffers_size 32k; proxy_busy_buffers_size 32k;
# Otimizações de Keep-Alive e Timeouts # --- Otimizações de Keep-Alive e Timeouts ---
##
keepalive_timeout 65s; keepalive_timeout 65s;
keepalive_requests 1000; # Número de requests por conexão keep-alive keepalive_requests 1000;
send_timeout 10s; # Tempo para o backend responder send_timeout 10s;
# Ativa o ModSecurity e aponta para o arquivo de configuração # --- Configurações de Segurança (WAF) ---
modsecurity on; modsecurity on;
modsecurity_rules_file /etc/nginx/modsecurity.conf; modsecurity_rules_file /etc/nginx/modsecurity.conf;
## # --- Configurações do GeoIP2 ---
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
# Configurações do GeoIP2
##
geoip2 /usr/share/GeoIP/GeoLite2-City.mmdb { geoip2 /usr/share/GeoIP/GeoLite2-City.mmdb {
$geoip2_country_code country iso_code; $geoip2_country_code country iso_code;
$geoip2_country_name country names en; $geoip2_country_name country names en;
@ -70,26 +71,13 @@ http {
$geoip2_isp autonomous_system_organization; $geoip2_isp autonomous_system_organization;
} }
geoip2 /usr/share/GeoIP/GeoLite2-ASN.mmdb { # --- Configurações de Logging ---
$geoip2_asn autonomous_system_number; # Define o nosso formato de log JSON detalhado.
$geoip2_isp autonomous_system_organization; 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.
##
# Logging Settings
##
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","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"}';
access_log /var/log/nginx/access.log detailed_proxy; access_log /var/log/nginx/access.log detailed_proxy;
# DIRETIVA DE LOG GLOBAL
# Todas as requisições de todos os sites serão salvas aqui neste formato, por padrão.
##
# Gzip Settings
##
# --- Configurações de Gzip ---
gzip on; gzip on;
gzip_vary on; gzip_vary on;
gzip_proxied any; gzip_proxied any;
@ -98,53 +86,63 @@ http {
gzip_http_version 1.1; gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; 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 ---
# Virtual Host Configs # IMPORTANTE: Os ficheiros aqui dentro precisarão de ser alterados! (Ver próximo passo)
##
include /etc/nginx/conf.d/*.conf; include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*; include /etc/nginx/sites-enabled/*;
} }
# ==============================================================================
# BLOCO STREAM: O ÚNICO GESTOR DAS PORTAS TCP/UDP PÚBLICAS
# ==============================================================================
stream { stream {
# Encaminhamento da porta de sinalização SIP (TCP) # --- 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 temos (telefonia) ---
server { server {
listen 5060; listen 5060;
proxy_pass 172.16.254.130:5060; proxy_pass 172.16.254.130:5060;
} }
# Encaminhamento da porta de sinalização SIP (UDP)
server { server {
listen 5060 udp; listen 5060 udp;
proxy_pass 172.16.254.130:5060; proxy_pass 172.16.254.130:5060;
} }
# Encaminhamento da faixa de portas RTP para o áudio (UDP)
# Nota: Isto requer que o Nginx tenha sido compilado com a opção --with-stream_udp_proxy_listen_gated
# Se der erro, comece apenas com as portas 5060 e adicione esta parte depois se necessário.
server { server {
listen 10000-20000 udp; listen 10000-20000 udp;
proxy_pass 172.16.254.130:$server_port; # O Nginx irá manter a porta de destino original proxy_pass 172.16.254.130:$server_port;
} }
} }
#mail {
# # See sample authentication script at:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# server {
# listen localhost:110;
# protocol pop3;
# proxy on;
# }
#
# server {
# listen localhost:143;
# protocol imap;
# proxy on;
# }
#}