Nginx将所有请求传递给特定的S3文件

Ofi*_*rov 2 nginx amazon-s3 amazon-ec2 amazon-web-services

我有一个带有我网站静态内容的S3存储桶,我有一个EC2实例,可以接收到网站的所有流量.

我希望每次向EC2发出请求都会从我的S3返回一个特定文件,但我希望保持URL与用户插入的URL相同.

示例:假设我的文件位于/path/index.html如果用户向www.mydomain.com发出请求,我想提供该文件,如果用户向www.mydomain.com/提出请求some/random/path /我仍然想要提供相同的文件.最后一个要求是位置保持不变.也就是说,即使提供了相同的文件,用户仍会在浏览器中看到www.mydoamin.com和www.mydoamin.com/some/random/path/.

这是我到目前为止的nginx配置文件,它似乎不起作用:

server {
    listen 80;
    ssl off;

    location / {
            proxy_http_version     1.1;
            proxy_set_header       Host 'some-host.s3.amazonaws.com';
            proxy_set_header       Authorization '';
            proxy_hide_header      x-amz-id-2;
            proxy_hide_header      x-amz-request-id;
            proxy_hide_header      Set-Cookie;
            proxy_ignore_headers   "Set-Cookie";
            proxy_buffering        off;
            proxy_intercept_errors on;


            resolver               8.8.4.4 8.8.8.8 valid=300s;
            resolver_timeout       10s;

            proxy_pass             http://some-host.s3.amazonaws.com/front-end/index.html;
    }
}
Run Code Online (Sandbox Code Playgroud)

有关如何使这项工作的任何想法?

谢谢!

Ofi*_*rov 7

我最终使用了一个变量.这解决了这个问题:

server {
    listen 80;
    ssl off;

    location / {
            proxy_http_version     1.1;
            proxy_set_header       Host 'some-host.s3.amazonaws.com';
            proxy_set_header       Authorization '';
            proxy_hide_header      x-amz-id-2;
            proxy_hide_header      x-amz-request-id;
            proxy_hide_header      Set-Cookie;
            proxy_ignore_headers   "Set-Cookie";
            proxy_buffering        off;
            proxy_intercept_errors on;

            resolver               172.16.0.23 valid=300s;
            set $indexfile         "some-host.s3.amazonaws.com/front-end/index.html";
            proxy_pass             http://$indexfile;
    }
}
Run Code Online (Sandbox Code Playgroud)