Nginx代理传递给s3的js文件返回400错误的请求

时间:2018-11-28 16:44:12

标签: nginx amazon-s3 proxypass

下面是我的nginx配置。

    server_name  myserver.com;

    location ~ /(in|sr)/(en|tm)/(.+\.(css|js)) {
        proxy_set_header Host http://mybucketabc.s3.amazonaws.com;

        proxy_http_version     1.1;
        proxy_set_header       Connection "";
        proxy_set_header       Authorization '';
        proxy_hide_header      x-amz-id-2;
        proxy_hide_header      x-amz-request-id;
        proxy_hide_header      x-amz-meta-server-side-encryption;
        proxy_hide_header      x-amz-server-side-encryption;
        proxy_hide_header      Set-Cookie;
        proxy_ignore_headers   Set-Cookie;
        proxy_intercept_errors on;
        add_header             Cache-Control max-age=31536000;

        rewrite ^/(in|sr)/(en|tm)/(.*) /$1/$2/$3 break;
        proxy_pass    http://mybucketabc.s3.amazonaws.com;
    }

当我尝试访问http://myserver.com/in/en/main.9bd9926d.js时,我收到“ 400错误的请求”

但是直接访问http://mybucketabc.s3.amazonaws.com/in/en/main.9bd9926d.js很好。

我对html和svg文件具有类似的代理传递规则,两者都可以正常工作,但对.js文件的请求始终会抛出“ 400错误请求”。

我们非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

更正主机后,此问题得到解决。

主机错误         proxy_set_header主机http://mybucketabc.s3.amazonaws.com;

正确的主机(已删除“ http://”)         proxy_set_header主机mybucketabc.s3.amazonaws.com;