# ============================================================================== # 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 { if ($host = vscode.itguys.com.br) { return 301 https://$host$request_uri; } # managed by Certbot 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_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 detailed_proxy; 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 } ssl_certificate /etc/letsencrypt/live/vscode.itguys.com.br/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/vscode.itguys.com.br/privkey.pem; # managed by Certbot }