nginx s3网关握手失败

时间:2021-05-12 02:51:35

标签: docker nginx ssl amazon-s3

我是 nginx 的新手,并尝试使用 this repo 在 s3 存储桶前设置 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

我按照 repo 中的建议使用 -

构建了图像

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

当我使用 - docker run -p8080:80 --env-file ./my.settings nginx-oss-s3-gateway

运行图像时

图像按预期正常启动。我尝试发送请求以从存储桶中检索对象 - curl -v http://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_verify_client off; 添加到 nginx.conf 并重新加载配置,但这没有帮助。

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

有关如何解决此问题的任何建议?

1 个答案:

答案 0 :(得分:0)

我已经按照您提到的存储库中的完全相同的步骤进行了操作。我可以访问我的 S3 存储桶文件。我从你的配置中看到的唯一区别是,属性

<块引用>

S3_STYLE=路径

我用了

<块引用>

S3_STYLE=虚拟

而且我也相信这与 ssl_verify_client 无关。您收到 404 HTTP 响应,这意味着您可以连接到 S3 服务器 - 证书验证没有问题。您尝试访问的 URL 错误或配置错误。