[Auto-Sync] Atualização das configurações em srvproxy001.itguys.com.br - 2025-09-21 02:00:38

This commit is contained in:
srvproxy001.itguys.com.br 2025-09-21 02:00:38 -03:00
parent 01689ce5ef
commit 352b7912ac
1 changed files with 119 additions and 76 deletions

View File

@ -1,99 +1,142 @@
# Ficheiro: /etc/nginx/sites-available/cloud.grupopralog.com.br.conf # ==============================================================================
# ARQUIVO DE CONFIGURAÇÃO NGINX PARA NEXTCLOUD
# DOMÍNIO: cloud.grupopralog.com.br
# AUTOR: Gemini AI (Especialista NGINX)
# VERSÃO: 2.0
# #
# Configuração de Proxy Reverso de ALTA PERFORMANCE para Nextcloud, # DESCRIÇÃO:
# incluindo cache privado de curta duração para a interface dinâmica. # Esta configuração atua como um proxy reverso seguro e otimizado para uma
# instância do Nextcloud.
#
# DESTAQUES DA CONFIGURAÇÃO:
# - A. UPSTREAM DO NEXTCLOUD: Centraliza a definição do servidor backend
# para facilitar a manutenção.
# - B. REDIRECIONAMENTO HTTP PARA HTTPS: Garante que todo o tráfego não
# seguro seja permanentemente redirecionado para HTTPS.
# - C. SERVIDOR PRINCIPAL HTTPS: O bloco principal que gerencia todo o tráfego
# seguro, habilitando SSL/TLS e HTTP/2.
# - D. PARÂMETROS DE SSL/TLS E SEGURANÇA: Carrega os certificados e inclui um
# snippet com parâmetros de segurança robustos (HSTS, Ciphers, etc.).
# Adiciona cabeçalhos de segurança recomendados pelo Nextcloud.
# - E. PARÂMETROS GERAIS DO SERVIDOR: Define o tamanho máximo para upload de
# arquivos e configura os logs de acesso e erro.
# - F. CABEÇALHOS DE PROXY (PROXY HEADERS): Adiciona/modifica cabeçalhos HTTP
# essenciais para que o Nextcloud (backend) receba as informações corretas
# sobre o cliente original (IP, protocolo, host).
# - G. TRATAMENTO DE URLS AMIGÁVEIS (PRETTY URLS): Implementa as regras de
# reescrita (`rewrite`) necessárias para remover o "index.php" das URLs,
# tornando-as mais limpas e amigáveis.
# - H. ROTAS ESPECÍFICAS (LOCATIONS):
# H.1. /.well-known/*: Rota padrão para validação de certificados (Let's
# Encrypt) e para os redirecionamentos de CalDAV e CardDAV, conforme
# as melhores práticas.
# H.2. Rota Principal (/): O bloco principal que captura todas as outras
# requisições e as encaminha para o backend Nextcloud.
#
# NOTA SOBRE CACHE:
# A configuração anterior tentava implementar um cache privado para a interface
# do Nextcloud. Essa é uma prática arriscada e não recomendada oficialmente,
# pois pode facilmente vazar dados de sessão entre usuários se a chave de cache
# não for perfeita. Removemos essa lógica em favor da estabilidade e segurança.
# O cache de assets estáticos deve ser gerenciado pelo próprio Nextcloud ou
# por um CDN, se necessário.
# ============================================================================== # ==============================================================================
# BLOCO HTTP: Redirecionar para HTTPS
# ==============================================================================
server {
if ($host = cloud.grupopralog.com.br) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
listen [::]:80;
server_name cloud.grupopralog.com.br;
include /etc/nginx/snippets/custom_errors.conf; # Carrega as páginas de erro personalizadas
location /.well-known/acme-challenge/ { root /var/www/html; }
location / { return 301 https://$host$request_uri; }
# ------------------------------------------------------------------------------
# A. UPSTREAM DO NEXTCLOUD
# Define o servidor backend onde o Nextcloud está rodando.
# ------------------------------------------------------------------------------
upstream nextcloud_backend {
server 172.16.253.12;
} }
# ============================================================================== # ==============================================================================
# BLOCO HTTPS: O Coração da nossa Configuração # B. BLOCO HTTP: Redirecionar para HTTPS
# ==============================================================================
server {
listen 80;
listen [::]:80;
server_name cloud.grupopralog.com.br;
# Desafio para renovação de certificado Let's Encrypt
location /.well-known/acme-challenge/ {
root /var/www/html;
}
# Redirecionamento permanente para a versão HTTPS do site
location / {
return 301 https://$host$request_uri;
}
}
# ==============================================================================
# C. BLOCO HTTPS: Servidor Principal
# ============================================================================== # ==============================================================================
server { server {
listen 443 ssl http2; listen 443 ssl http2;
listen [::]:443 ssl http2; listen [::]:443 ssl http2;
server_name cloud.grupopralog.com.br; server_name cloud.grupopralog.com.br;
include /etc/nginx/snippets/custom_errors.conf; # Carrega as páginas de erro personalizadas
# --- Certificados e Segurança SSL --- # --------------------------------------------------------------------------
#ssl_certificate /etc/letsencrypt/live/cloud.grupopralog.com.br/fullchain.pem; # D. PARÂMETROS DE SSL/TLS E SEGURANÇA
#ssl_certificate_key /etc/letsencrypt/live/cloud.grupopralog.com.br/privkey.pem; # --------------------------------------------------------------------------
#ssl_trusted_certificate /etc/letsencrypt/live/cloud.grupopralog.com.br/fullchain.pem; ssl_certificate /etc/letsencrypt/live/cloud.grupopralog.com.br/fullchain.pem; # managed by Certbot
include /etc/nginx/snippets/ssl_params.conf; ssl_certificate_key /etc/letsencrypt/live/cloud.grupopralog.com.br/privkey.pem; # managed by Certbot
include /etc/nginx/snippets/ssl_params.conf; # Carrega parâmetros de segurança (HSTS, Ciphers, etc.)
# --- Políticas de Acesso e Logs --- # Cabeçalhos de segurança recomendados pelo Nextcloud
include /etc/nginx/snippets/global_robots.conf; add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
add_header X-Content-Type-Options nosniff always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Permitted-Cross-Domain-Policies none always;
add_header X-Robots-Tag "noindex, nofollow" always;
add_header X-XSS-Protection "1; mode=block" always;
# --------------------------------------------------------------------------
# E. PARÂMETROS GERAIS DO SERVIDOR
# --------------------------------------------------------------------------
client_max_body_size 10G; # Permite uploads de até 10GB
access_log /var/log/nginx/access.log detailed_proxy; access_log /var/log/nginx/access.log detailed_proxy;
error_log /var/log/nginx/error.log; error_log /var/log/nginx/error.log;
include /etc/nginx/snippets/custom_errors.conf;
include /etc/nginx/snippets/global_robots.conf;
# --- Parâmetros Gerais --- # --------------------------------------------------------------------------
client_max_body_size 10G; # H. ROTAS ESPECÍFICAS (LOCATIONS)
# --------------------------------------------------------------------------
# --- REGRAS DE ROTEAMENTO (LOCATIONS) --- # H.1. Rota para redirecionamentos de CalDAV e CardDAV
# A ordem destas regras é CRUCIAL.
# 1. Redirecionamentos para CalDAV e CardDAV
location = /.well-known/carddav { return 301 $scheme://$host/remote.php/dav; } location = /.well-known/carddav { return 301 $scheme://$host/remote.php/dav; }
location = /.well-known/caldav { return 301 $scheme://$host/remote.php/dav; } location = /.well-known/caldav { return 301 $scheme://$host/remote.php/dav; }
# 2. Rota para Ficheiros Estáticos (Cache Agressivo) # H.2. Rota Principal da Aplicação
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_immutable_static.conf; # Usa o nosso cache mais agressivo
proxy_pass http://172.16.253.12;
}
# 3. Rota para Sincronização de Ficheiros (WebDAV, etc.) - SEM CACHE
location ~ ^/(remote|dav|carddav|caldav) {
proxy_no_cache 1;
proxy_cache_bypass 1;
proxy_buffering off;
proxy_request_buffering off;
proxy_read_timeout 3600s;
include /etc/nginx/snippets/proxy_params.conf;
proxy_pass http://172.16.253.12;
}
# 4. Rota Principal para a Aplicação (CACHE PRIVADO DE CURTA DURAÇÃO)
location / { location / {
# Usa a nossa zona de cache dedicada 'nextcloud_private_cache'. # ----------------------------------------------------------------------
proxy_cache nextcloud_private_cache; # G. TRATAMENTO DE URLS AMIGÁVEIS (PRETTY URLS)
# A "CHAVE" PESSOAL DE CADA UTILIZADOR. Usa o cookie de sessão do Nextcloud. # Estas regras reescrevem as URLs para remover o "index.php".
proxy_cache_key "$scheme$proxy_host$request_uri$cookie_ocrx6w0vy907"; # ----------------------------------------------------------------------
# Cacheia por um tempo muito curto: 1 minuto. rewrite ^\/\.well-known\/(card|cal)dav /remote.php/dav/ permanent;
proxy_cache_valid 200 1m; rewrite ^(\/remote\/.+)(\/)$ $1 permanent; # Remove a barra final de URLs do remote
# Ignora e esconde os cabeçalhos de sessão para permitir o cache.
proxy_ignore_headers Expires Cache-Control Set-Cookie;
proxy_hide_header Set-Cookie;
# Adiciona um cabeçalho de depuração para este cache.
add_header X-Private-Cache $upstream_cache_status;
# O cache SÓ é usado para requisições GET. POST, PUT, DELETE, etc., são passadas diretamente.
proxy_cache_methods GET HEAD;
include /etc/nginx/snippets/proxy_params.conf; # Passa a requisição para o backend
include /etc/nginx/snippets/websocket_params.conf; proxy_pass http://nextcloud_backend;
proxy_pass http://172.16.253.12; # ----------------------------------------------------------------------
# F. CABEÇALHOS DE PROXY (PROXY HEADERS)
# ----------------------------------------------------------------------
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
# Parâmetros adicionais de proxy
proxy_http_version 1.1;
proxy_connect_timeout 60s;
proxy_read_timeout 3600s; # Essencial para sync de arquivos grandes
proxy_send_timeout 3600s;
proxy_buffering off; # Recomendado para uploads/downloads grandes
proxy_request_buffering off;
} }
ssl_certificate /etc/letsencrypt/live/cloud.grupopralog.com.br/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/cloud.grupopralog.com.br/privkey.pem; # managed by Certbot
} }