Yusuke Ebihara's website
Dotfiles Blog RSS

Nginxのproxy_passをS3のurlに設定すると404になる

2023/05/19

目次

問題

AWS S3のstatic website hostingのurlに対して、nginxのリバースプロキシを設定しようとした。

nginxの設定は以下の通り。

    location / {
        proxy_pass http://<bucket-name>.s3-website-ap-northeast-1.amazonaws.com;
    }

すると、該当urlへのアクセスにより "Bucket not found" エラーが表示される。

解決策

プロキシ先に渡すHostヘッダーを再設定する。

     location / {
+       proxy_set_header Host http://<bucket-name>.s3-website-ap-northeast-1.amazonaws.com;
        proxy_pass http://<bucket-name>.s3-website-ap-northeast-1.amazonaws.com;
     }

S3側ではHostヘッダを見て返すリソースを判断しているようだ。

コメント

Github Issue と連動しています。