Docker nginx s3网关握手失败

Docker nginx s3网关握手失败,docker,nginx,ssl,amazon-s3,Docker,Nginx,Ssl,Amazon S3,我是nginx新手,尝试在s3 bucket前面使用设置nginx代理 基于repo,我的设置文件(名称-->my.settings)如下所示- S3_BUCKET_NAME=my-s3-bucket S3_SERVER=s3.amazonaws.com S3_REGION=us-east-1 S3_ACCESS_KEY_ID=myaccesskey S3_SECRET_KEY=mysecretkey S3_SERVER_PORT=443 S3_SERVER_PROTO=https S3_STY

我是nginx新手,尝试在s3 bucket前面使用设置nginx代理

基于repo,我的设置文件(名称-->my.settings)如下所示-

S3_BUCKET_NAME=my-s3-bucket
S3_SERVER=s3.amazonaws.com
S3_REGION=us-east-1
S3_ACCESS_KEY_ID=myaccesskey
S3_SECRET_KEY=mysecretkey
S3_SERVER_PORT=443
S3_SERVER_PROTO=https
S3_STYLE=path
S3_DEBUG=true
AWS_SIGS_VERSION=4
我按照回购协议中的建议使用-

docker build-f Dockerfile.oss-t nginx-oss-s3-gateway.

当我使用-
docker run-p8080:80--env文件运行映像时。/my.settings nginx-oss-s3-gateway

图像按预期启动良好。我试图发送一个请求,从bucket中检索对象-
curl-vhttp://localhost:8080/index.html
我得到了一个HTTP 404。我看了看正在运行的nginx容器,看到了这一点-

2021/05/12 02:39:17 [error] 58#58: *1 peer closed connection in SSL handshake while SSL 
handshaking to upstream, client: 172.17.0.1, server: , request: "GET /index.html HTTP/1.1", 
upstream: "https://52.217.165.200:443/mys3bucket/index.html", host: "localhost:8080"
172.17.0.1 - - [12/May/2021:02:39:17 +0000] "GET /index.html HTTP/1.1" 404 146 "-" "curl/7.64.1" "-"
2021/05/12 02:39:17 [info] 58#58: *1 client 172.17.0.1 closed keepalive connection
我尝试添加
ssl\u验证\u客户端关闭
到nginx.conf并重新加载配置,但这没有帮助

我有一种感觉,这是因为nginx无法验证aws s3证书?在这种情况下,我应该将s3证书导入信任存储并指向nginx config吗?我试图通过下载特定证书来避免证书固定


关于如何解决这个问题,有什么建议吗?

我遵循了与您提到的存储库中完全相同的步骤。我可以访问我的S3存储桶文件。我从您的配置中看到的唯一区别是,属性

S3\u样式=路径

相反,我用

S3_风格=虚拟


我还相信这与
ssl\u-verify\u-client
无关。您将获得
404
HTTP响应&这意味着您能够连接到S3服务器-证书验证没有问题。您尝试访问的URL错误或配置错误。

我尝试将
S3\u STYLE
分别设置为path和virtual,登录到容器中并使用多种S3凭据组合。它不起作用。你的水桶是公用的吗?@satya不。我的水桶是私人的。顺便说一句,这些属性是环境变量。因此,登录到容器并更改它们可能不起作用,因为服务已经启动并运行。我想,您应该尝试更改
my.settings
文件中的变量,然后重新运行容器使其工作。