server { listen 80; server_name vscode.itk.academy *.vscode.itk.academy; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name vscode.itk.academy *.vscode.itk.academy; ssl_certificate /etc/letsencrypt/live/vscode.itk.academy/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/vscode.itk.academy/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; # Dynamic port proxying based on subdomain location / { if ($host ~* "^(\d+)\.vscode\.itk\.academy$") { set $port $1; } proxy_pass http://127.0.0.1:$port/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_read_timeout 600s; proxy_send_timeout 600s; proxy_connect_timeout 10s; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; } # Proxy static assets correctly location ~* ^/stable-([a-f0-9]+)/vscode-remote-resource { if ($host ~* "^(\d+)\.vscode\.itk\.academy$") { set $port $1; } proxy_pass http://127.0.0.1:$port$request_uri; proxy_http_version 1.1; proxy_set_header Host $host; expires max; access_log off; } # Proxy static assets correctly location ~* ^/stable-([a-f0-9]+)/static/ { if ($host ~* "^(\d+)\.vscode\.itk\.academy$") { set $port $1; } proxy_pass http://127.0.0.1:$port$request_uri; proxy_http_version 1.1; proxy_set_header Host $host; expires max; access_log off; } }