server { listen 58881 default_server; server_name localhost _; root /usr/share/nginx/html; index background.html; location / { try_files $uri $uri/ =404; } # CORS proxy for map tiles. Forwards to the upstream tile server # but injects permissive CORS headers so the browser can load # tiles via cross-origin img.src requests. The 'resolver' is # required by the proxy module to resolve the upstream hostname. location ^~ /carto/ { resolver 1.1.1.1 8.8.8.8 ipv6=off valid=300s; proxy_pass https://a.basemaps.cartocdn.com/; proxy_ssl_server_name on; proxy_set_header Host a.basemaps.cartocdn.com; proxy_set_header User-Agent "Mozilla/5.0 (compatible; tile-proxy)"; add_header Access-Control-Allow-Origin "*" always; add_header Access-Control-Allow-Methods "GET, HEAD, OPTIONS" always; add_header Access-Control-Max-Age 86400 always; } # CORS preflight handler location ~* \.(png|jpg)$ { if ($request_method = 'OPTIONS') { add_header Access-Control-Allow-Origin "*" always; add_header Access-Control-Allow-Methods "GET, HEAD, OPTIONS" always; add_header Access-Control-Max-Age 86400 always; add_header Content-Length 0; return 204; } add_header Access-Control-Allow-Origin "*" always; } }