Skip to content

Instantly share code, notes, and snippets.

@bennylope
Created October 19, 2011 01:30
Show Gist options
  • Save bennylope/1297267 to your computer and use it in GitHub Desktop.
Save bennylope/1297267 to your computer and use it in GitHub Desktop.

Revisions

  1. bennylope created this gist Oct 19, 2011.
    34 changes: 34 additions & 0 deletions remotefiles.conf
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,34 @@
    location ~* ^/remote-files/(http[s]*://)(.*?)/(.*) {
    # Do not allow people to mess with this location directly
    # Only internal redirects are allowed
    internal;

    # nginx has to be able to resolve the remote URLs
    resolver 8.8.8.8;

    # Location-specific logging
    #access_log /usr/local/etc/nginx/logs/internal_redirect.access.log main;
    error_log /usr/local/etc/nginx/logs/internal_redirect.error.log warn;

    # Extract download url from the request
    set $download_uri $3;
    set $download_host $2;
    set $download_protocol $1;

    # Compose download url
    set $download_url $download_protocol$download_host/$download_uri;

    # The next two lines could be used if your storage
    # backend does not support Content-Disposition
    # headers used to specify file name browsers use
    # when save content to the disk
    proxy_hide_header Content-Disposition;
    add_header Content-Disposition 'attachment; filename="$args"';

    # Do not touch local disks when proxying
    # content to clients
    proxy_max_temp_file_size 0;

    # Download the file and send it to client
    proxy_pass $download_url;
    }