Nginx 如何为 AWS S3 存储桶配置动态代理
Nginx How to configure the Dynamic Proxy for AWS S3 bucket
我们有如下nginx配置,对应每个s3 bucket,
location /bucketname1/ {
proxy_pass https://bucketname1.s3.amazonaws.com/;
}
location /bucketname2/ {
proxy_pass https://bucketname2.s3.amazonaws.com/;
}
location /bucketname3/ {
proxy_pass https://bucketname3.s3.amazonaws.com/;
}
但是你可以看到,当创建的bucket越来越多的时候,这个location的配置也在增加。
我打算做一个通用的位置配置来彻底解决这个问题。
但是对于这个位置:
location ~* ^/([^/]+) {
proxy_pass https://.s3.amazonaws.com/;
}
我们遇到了“没有定义解析器来解析 bucketname1”的错误,
我们的 nginx 部署在 EC2 Linux 机器下,有谁知道我如何找到我的解析器 ip 或者有没有更好的方法来解决这种情况而不使用解析器?
谢谢
这是一个复杂的问题。然而:
您的 VPC 的解析器通常存在于 IP 上,IP 等于其基本 CIDR 范围,但以 2 结尾。
例如,如果您的 VPC 是 10.0.0.0/8,您会在 10.0.0.2 找到解析器地址。在 169.254.169.253 也有一个解析器。
如果您通过 ssh 进入同一个 VPC 中的 EC2 并使用 运行 dig 或 nslookup 命令,您将看到它成功解析。尝试:
dig @X.X.X.2 <bucket-name>.s3.amazonaws.com
或
dig @169.254.169.253 <bucket-name>.s3.amazonaws.com
将此添加到您的 nginx.conf 应该有助于解析这些 IP:
resolver X.X.X.2 169.254.169.253;
本文介绍了使用您的 VPC 创建的两个默认 DNS 解析器 IP 地址:
https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html
阅读服务器指令上的 nginx 文档很有帮助:
http://nginx.org/en/docs/http/ngx_http_core_module.html#resolver
这两个堆栈溢出响应也可能对解决您的问题很有帮助:
https://serverfault.com/questions/875150/resolver-directive-for-setting-up-nginx-reverse-proxy
和
我们有如下nginx配置,对应每个s3 bucket,
location /bucketname1/ {
proxy_pass https://bucketname1.s3.amazonaws.com/;
}
location /bucketname2/ {
proxy_pass https://bucketname2.s3.amazonaws.com/;
}
location /bucketname3/ {
proxy_pass https://bucketname3.s3.amazonaws.com/;
}
但是你可以看到,当创建的bucket越来越多的时候,这个location的配置也在增加。
我打算做一个通用的位置配置来彻底解决这个问题。
但是对于这个位置:
location ~* ^/([^/]+) {
proxy_pass https://.s3.amazonaws.com/;
}
我们遇到了“没有定义解析器来解析 bucketname1”的错误, 我们的 nginx 部署在 EC2 Linux 机器下,有谁知道我如何找到我的解析器 ip 或者有没有更好的方法来解决这种情况而不使用解析器?
谢谢
这是一个复杂的问题。然而:
您的 VPC 的解析器通常存在于 IP 上,IP 等于其基本 CIDR 范围,但以 2 结尾。
例如,如果您的 VPC 是 10.0.0.0/8,您会在 10.0.0.2 找到解析器地址。在 169.254.169.253 也有一个解析器。
如果您通过 ssh 进入同一个 VPC 中的 EC2 并使用 运行 dig 或 nslookup 命令,您将看到它成功解析。尝试:
dig @X.X.X.2 <bucket-name>.s3.amazonaws.com
或
dig @169.254.169.253 <bucket-name>.s3.amazonaws.com
将此添加到您的 nginx.conf 应该有助于解析这些 IP:
resolver X.X.X.2 169.254.169.253;
本文介绍了使用您的 VPC 创建的两个默认 DNS 解析器 IP 地址:
https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html
阅读服务器指令上的 nginx 文档很有帮助:
http://nginx.org/en/docs/http/ngx_http_core_module.html#resolver
这两个堆栈溢出响应也可能对解决您的问题很有帮助:
https://serverfault.com/questions/875150/resolver-directive-for-setting-up-nginx-reverse-proxy
和