diff --git a/nginx/sites-available/cloud.grupopralog.com.br.conf b/nginx/sites-available/cloud.grupopralog.com.br.conf index f681eca..efa851c 100644 --- a/nginx/sites-available/cloud.grupopralog.com.br.conf +++ b/nginx/sites-available/cloud.grupopralog.com.br.conf @@ -1,7 +1,7 @@ # Ficheiro: /etc/nginx/sites-available/cloud.grupopralog.com.br.conf # -# Configuração de Proxy Reverso OTIMIZADA para Nextcloud, usando a configuração -# recomendada pela comunidade para máxima compatibilidade e performance. +# Configuração de Proxy Reverso OTIMIZADA para Nextcloud a correr num backend Apache. +# Esta é a configuração recomendada pela comunidade, adaptada com os nossos snippets. # ============================================================================== # BLOCO HTTP: Redirecionar para HTTPS @@ -26,79 +26,67 @@ server { ssl_certificate /etc/letsencrypt/live/cloud.grupopralog.com.br/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/cloud.grupopralog.com.br/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/cloud.grupopralog.com.br/fullchain.pem; + # Inclui o nosso "kit" de segurança SSL com cifras modernas e cabeçalhos de segurança. include /etc/nginx/snippets/ssl_params.conf; # --- Políticas de Acesso e Logs --- - include /etc/nginx/snippets/robots_block_all.conf; + include /etc/nginx/snippets/global_robots.conf; access_log /var/log/nginx/access.log detailed_proxy; error_log /var/log/nginx/error.log; # --- Parâmetros Gerais --- + # Essencial para uploads de ficheiros grandes no Nextcloud. client_max_body_size 10G; # --- REGRAS DE ROTEAMENTO (LOCATIONS) --- - # 1. Redirecionamentos para CalDAV e CardDAV + # 1. Redirecionamentos para CalDAV e CardDAV (essencial para a compatibilidade) location = /.well-known/carddav { return 301 $scheme://$host/remote.php/dav; } location = /.well-known/caldav { return 301 $scheme://$host/remote.php/dav; } - - # Define a raiz do seu site Nextcloud no servidor de backend. - # Isto é usado pela regra 'try_files' abaixo. - root /var/www/nextcloud; # Ajuste este caminho se a sua instalação for diferente - # 2. Rota Principal para a Aplicação (usando FastCGI) - # Esta regra apanha a maioria do tráfego e encaminha-o para o PHP-FPM. - location / { - # Adiciona cabeçalhos de segurança específicos do Nextcloud. - add_header X-Robots-Tag "noindex, nofollow" always; - - # Redireciona para o script principal do Nextcloud. - rewrite ^ /index.php; + # 2. Bloqueia o acesso a diretórios sensíveis do Nextcloud. + # Esta é uma camada de segurança importante. + location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ { + deny all; } - - # A "magia" para as URLs "bonitas" do Nextcloud. - location ~ ^\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|ocm-provider\/.+|.+\/richdocumentscode\/proxy)\.php(?:$|\/) { - # Encaminha o pedido para o socket do PHP-FPM no seu servidor Nextcloud. - # !!! SUBSTITUA O CAMINHO ABAIXO PELO QUE VOCÊ ENCONTROU NO PASSO 1 !!! - fastcgi_pass unix:/run/php/php8.2-fpm.sock; - - fastcgi_split_path_info ^(.+?\.php)(\/.*|)$; - set $path_info $fastcgi_path_info; - - # Inclui os parâmetros FastCGI padrão. - include fastcgi_params; - - # Adiciona os parâmetros específicos que o Nextcloud precisa. - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - fastcgi_param PATH_INFO $path_info; - fastcgi_param modHeadersAvailable true; - fastcgi_param front_controller_active true; - fastcgi_pass_request_headers on; - - # Cabeçalhos de proxy para que o Nextcloud saiba a origem da requisição. - fastcgi_param REMOTE_ADDR $remote_addr; - fastcgi_param SERVER_NAME $server_name; - fastcgi_param HTTPS on; + location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { + deny all; } # 3. Rota para Ficheiros Estáticos (Cache Agressivo) - # Esta regra apanha os ficheiros que são seguros para cachear. + # Apanha a "casca" da aplicação para acelerar o carregamento. location ~* \.(?:css|js|mjs|svg|gif|png|jpg|jpeg|ico|wasm|woff2?|ttf|eot)$ { + include /etc/nginx/snippets/proxy_params.conf; include /etc/nginx/snippets/cache_aggressive_static.conf; - # Esta regra serve os ficheiros diretamente, sem passar pelo PHP. - try_files $uri /index.php$request_uri; + # O backend é o seu servidor Apache na porta 80. + proxy_pass http://172.16.253.12; + } + + # 4. Rota para Sincronização de Ficheiros (WebDAV) + # Otimizada para transferências de ficheiros grandes e estáveis. + location ~ ^/remote\.php/(dav|webdav) { + # Desativa o buffering para que os ficheiros fluam diretamente. + proxy_buffering off; + proxy_request_buffering off; + # Timeouts longos para evitar falhas em uploads/downloads grandes. + proxy_read_timeout 3600s; + proxy_send_timeout 3600s; - # Adiciona os cabeçalhos de proxy para o caso de um fallback para o PHP. include /etc/nginx/snippets/proxy_params.conf; proxy_pass http://172.16.253.12; } - # 4. Bloqueia o acesso a diretórios sensíveis. - location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ { - deny all; - } - location ~ ^\/\. { - deny all; + # 5. Rota Principal para a Aplicação (Sem Cache, com WebSockets) + # Apanha todo o resto do tráfego. + location / { + # Desativa o cache para garantir que vemos sempre os dados mais recentes. + proxy_no_cache 1; + proxy_cache_bypass 1; + + include /etc/nginx/snippets/proxy_params.conf; + include /etc/nginx/snippets/websocket_params.conf; # Suporte a tempo real + + proxy_pass http://172.16.253.12; } }