Nginx pass upstream headers to the remote request

后端 未结 1 661
北恋
北恋 2021-01-15 02:07

This question is similar to this one but doing x-accel-redirect on aws s3 resource. The former tried to set the upstream headers to the local reque

1条回答
  •  梦毁少年i
    2021-01-15 03:10

    proxy_pass_header X-Accel-Redirect;
    passenger_pass_header X-Accel-Redirect;
    
    # this is intermediate location that stores header
    # to variable and rewrites to another location
    location ^~ /download_zip/ {
        internal;
        set $Content_MD5 $upstream_http_content_md5;
        rewrite ^/(.+) /amazon_$1;
    }
    
    location ^~ /amazon_download_zip/ {
        internal;
        resolver 8.8.8.8 valid=300s;
    
        proxy_buffering off;
        proxy_set_header Content-Length ""; 
        proxy_set_header Cookie ""; 
    
        proxy_hide_header x-amz-request-id;
        proxy_hide_header x-amz-meta-uid;
        proxy_hide_header x-amz-id-2;
        proxy_hide_header x-amz-meta-mode;
        proxy_hide_header x-amz-meta-mtime;
        proxy_hide_header x-amz-meta-gid;
        proxy_hide_header x-amz-version-id;
        proxy_hide_header accept-ranges;
    
        # Do not touch local disks when proxying
        # content to clients
        proxy_method GET;
        proxy_pass_request_body off;
        proxy_max_temp_file_size 0;
    
        proxy_pass_header Content-MD5;
        add_header Content-MD5 $Content_MD5; 
    
        proxy_pass https://a_b_c_assets.s3-east.amazonaws.com/;
    }
    

    0 讨论(0)
提交回复
热议问题