# Static file serving location /static/ { alias /static/; gzip on; gzip_vary on; gzip_proxied any; gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css; expires 365d; access_log /dev/null; } # Geojson files location /uploads/ { alias /data/; expires 30d; } location /favicon.ico { alias /static/favicon.ico; } # X-Accel-Redirect location /internal/ { internal; gzip_vary on; gzip_static on; add_header X-DataLayer-Version $upstream_http_x_datalayer_version; alias /data/; } # Ajax proxy location ~ ^/proxy/(.*) { internal; add_header X-Proxy-Cache $upstream_cache_status always; proxy_cache_background_update on; proxy_cache_use_stale updating; proxy_cache ajax_proxy; proxy_cache_valid 1m; # Default. Umap will override using X-Accel-Expires set $target_url $1; # URL is encoded, so we need a few hack to clean it back. if ( $target_url ~ (.+)%3A%2F%2F(.+) ){ # fix :// between scheme and destination set $target_url $1://$2; } if ( $target_url ~ (.+?)%3A(.*) ){ # fix : between destination and port set $target_url $1:$2; } if ( $target_url ~ (.+?)%2F(.*) ){ # fix / after port, the rest will be decoded by proxy_pass set $target_url $1/$2; } resolver 8.8.8.8; add_header X-Proxy-Target $target_url; # For debugging proxy_pass_request_headers off; proxy_set_header Content-Type $http_content_type; proxy_set_header Content-Encoding $http_content_encoding; proxy_set_header Content-Length $http_content_length; proxy_read_timeout 10s; proxy_connect_timeout 5s; proxy_ssl_server_name on; proxy_pass $target_url; proxy_intercept_errors on; error_page 301 302 307 = @handle_proxy_redirect; } location @handle_proxy_redirect { resolver 8.8.8.8; set $saved_redirect_location '$upstream_http_location'; proxy_pass $saved_redirect_location; }