首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nginx将上游报头传递给远程请求。

Nginx将上游报头传递给远程请求。
EN

Stack Overflow用户
提问于 2014-07-26 13:53:57
回答 1查看 4.2K关注 0票数 2

这个问题类似于this one,但在aws s3资源上执行x-accel-redirect。前者试图将上游标头设置为本地请求。这个很好用。但是现在我已经将我的内容移到了amazon上,并且我希望实现相同的限制下载到s3对象。

这是我的nginx配置

代码语言:javascript
复制
proxy_pass_header X-Accel-Redirect;
passenger_pass_header X-Accel-Redirect;

location ~* ^/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 $upstream_http_content_md5; 

   #  proxy_set_header Content-MD5 "123123123123123";


     proxy_pass https://a_b_c_assets.s3-east.amazonaws.com/$1$is_args$args; 


     }

铁轨部分是

代码语言:javascript
复制
headers['X-Accel-Redirect'] = '/download_zip/uploads/' + params[:story_id] +'/' +    params[:story_id] + '.zip?' + secure_part
headers['X-Accel-Expires'] = 'max'
headers['Content-MD5'] = checksum

除了Content-MD5没有传递给代理请求之外,一切都很正常。

任何帮助都是非常感谢的。

这里的另一个similar question

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-28 06:21:54

代码语言:javascript
复制
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/;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24971724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档