diff --git a/nginx/sites-available/vscode.itguys.com.br.conf b/nginx/sites-available/vscode.itguys.com.br.conf new file mode 100644 index 0000000..4a3ab85 --- /dev/null +++ b/nginx/sites-available/vscode.itguys.com.br.conf @@ -0,0 +1,123 @@ +# ============================================================================== +# Configuração para VS Code Server - vscode.itguys.com.br +# +# Data da Alteração: 2025-10-20 +# Contexto: Configuração de proxy reverso para múltiplas instâncias do +# VS Code Server (code-server) em portas diferentes. +# *** ATUALIZAÇÃO: Removido bloqueio de bots e adicionado filtro de +# acesso restrito por IP para uso em rede interna. *** +# +# Features: +# - Acesso restrito por IP (redes internas) +# - Redirecionamento HTTP -> HTTPS +# - SSL/TLS seguro (TLS 1.2, 1.3) com HTTP/2 +# - Headers de segurança (HSTS, CSP, X-Frame-Options) +# - Suporte total a WebSockets (essencial para VS Code) +# - Logs de acesso e erro dedicados +# - Compressão Gzip +# ============================================================================== + +# --- SERVIDOR HTTP (Redirecionamento para HTTPS) --- +server { + listen 80; + server_name vscode.itguys.com.br; + + # Logs para o redirecionamento + access_log /var/log/nginx/vscode.itguys.com.br.access.log; + error_log /var/log/nginx/vscode.itguys.com.br.error.log; + + # Acesso restrito também aplicado ao redirecionamento + allow 10.10.253.0/24; + allow 10.11.0.0/24; + allow 172.16.0.0/16; + deny all; + + # Redireciona permanentemente todo o tráfego HTTP para HTTPS + return 301 https://$host$request_uri; +} + +# --- SERVIDOR HTTPS (Configuração Principal) --- +server { + listen 443 ssl http2; + server_name vscode.itguys.com.br; + + # Segurança + # Caminhos para seus certificados SSL (substitua pelos caminhos corretos) + #ssl_certificate /etc/letsencrypt/live/vscode.itguys.com.br/fullchain.pem; + #ssl_certificate_key /etc/letsencrypt/live/vscode.itguys.com.br/privkey.pem; + + # Configurações de SSL/TLS (baseado em boas práticas) + ssl_protocols TLSv1.2 TLSv1.3; + ssl_prefer_server_ciphers on; + ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384'; + ssl_session_cache shared:SSL:10m; + ssl_session_timeout 1d; + ssl_session_tickets off; + ssl_stapling on; + ssl_stapling_verify on; + + # Logs + access_log /var/log/nginx/vscode.itguys.com.br.access.log; + error_log /var/log/nginx/vscode.itguys.com.br.error.log warn; + + # Acesso Restrito + # Permite o acesso apenas a partir das redes internas especificadas. + allow 10.10.253.0/24; + allow 10.11.0.0/24; + allow 172.16.0.0/16; + deny all; + + # Headers de Segurança + add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always; + add_header X-Frame-Options "SAMEORIGIN" always; + add_header X-Content-Type-Options "nosniff" always; + add_header Referrer-Policy "strict-origin-when-cross-origin" always; + add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' data:; font-src 'self'; object-src 'none'; frame-ancestors 'none'; connect-src 'self' wss:;" always; + + # Raiz do servidor (opcional) + root /var/www/html; + + # Otimizações + gzip on; + gzip_vary on; + gzip_proxied any; + gzip_comp_level 6; + gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; + + # Roteamento por Usuário (Proxy Reverso) + + # Rota para o Usuário 1 -> Porta 8081 + location /vitoria/ { + proxy_pass http://10.10.253.161:8081/; + 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; + + # Configurações para WebSockets (CRÍTICO para VS Code) + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_read_timeout 86400; + } + + # Rota para o Usuário 2 -> Porta 8082 + location /daivid/ { + proxy_pass http://10.10.253.161:8082/; + 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; + + # Configurações para WebSockets (CRÍTICO para VS Code) + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_read_timeout 86400; + } + + # Bloqueia o acesso à raiz do domínio + location = / { + return 403; # Forbidden + } +}