server { # Ouve na porta 443 com SSL e suporte ao protocolo HTTP/2 listen 443 ssl http2; listen [::]:443 ssl http2; # Define o nome do servidor para correspondência de domínio server_name connector.yourdomain.com; # Caminho para o certificado SSL e chave privada ssl_certificate /path/full-chain.pem; ssl_certificate_key /path/priv-key.pem; # Inclui configurações de segurança de um arquivo externo include /etc/nginx/nginxconfig.io/security.conf; # Restringe os métodos de requisição permitidos para apenas POST if ($request_method !~ ^(POST|OPTIONS)$) { return 405; } # Configurações de log de acesso e erro access_log /var/log/nginx/access.log combined buffer=512k flush=1m; error_log /var/log/nginx/error.log warn; # Trata solicitações pré-voo CORS para o endpoint /webhook/chatwoot location = /webhook/chatwoot { # Verifica se o método é OPTIONS (solicitação pré-voo CORS) if ($request_method = 'OPTIONS') { # Permite CORS somente para origens específicas if ($http_origin ~* (http://apiv2.domain.com|http://example2.com)) { # Configura cabeçalhos CORS para as origens permitidas add_header 'Access-Control-Allow-Origin' "$http_origin"; add_header 'Access-Control-Allow-Methods' 'POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' '*'; add_header 'Access-Control-Allow-Credentials' 'true'; # Define cabeçalhos adicionais para a resposta OPTIONS add_header 'Content-Type' 'text/plain; charset=UTF-8'; add_header 'Content-Length' 0; # Retorna um status 204 (sem conteúdo) para a solicitação OPTIONS return 204; } # Retorna um status 405 (método não permitido) se a origem não for permitida return 405; } } # Configuração do proxy reverso para o endpoint /webhook/chatwoot location /webhook/chatwoot { # Permite CORS somente para origens específicas if ($http_origin ~* (http://apiv2.domain.com|http://example2.com)) { # Configura cabeçalhos CORS para as origens permitidas add_header 'Access-Control-Allow-Origin' "$http_origin"; add_header 'Access-Control-Allow-Methods' 'POST'; add_header 'Access-Control-Allow-Headers' '*'; add_header 'Access-Control-Allow-Credentials' 'true'; } # Define o destino do proxy reverso proxy_pass http://127.0.0.1:8000/webhook/chatwoot; # Define o cabeçalho Host passado para o servidor proxy proxy_set_header Host $host; # Inclui configurações de proxy adicionais de um arquivo externo include /etc/nginx/nginxconfig.io/proxy.conf; } # Inclui configurações gerais adicionais de um arquivo externo include /etc/nginx/nginxconfig.io/general.conf; } # Configuração do servidor para redirecionamento de HTTP para HTTPS server { # Ouve na porta 80 (padrão para HTTP) listen 80; listen [::]:80; # Define o nome do servidor para correspondência de domínio server_name connector.yourdomain.com; # Redireciona todo o tráfego HTTP para HTTPS return 301 https://connector.yourdomain.com$request_uri; }