使用Cloudfront在ec2实例上生成时获得405错误代码

时间:2019-05-28 13:49:43

标签: amazon-s3 amazon-ec2 amazon-cloudfront

我创建了一个与2个起源相关的cloudfront发行版: 1.我上传的s3静态网站。 2.具有以下配置的nginx docker的ec2实例:

location /api {
        proxy_pass http://my_app:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
  client_max_body_size 1000M;
  server_tokens off;

我配置2种行为 带有默认(*)路径模式的s3,允许所有HTTP方法使用原始缓存标头。转发所有缓存和字符串。

ec2路径模式api,允许所有HTTP方法使用原始缓存标头。转发所有缓存和字符串。

我得到405

<html>
<head><title>405 Method Not Allowed</title></head>
<body>
<h1>405 Method Not Allowed</h1>
<ul>
<li>Code: MethodNotAllowed</li>
<li>Message: The specified method is not allowed against this resource.</li>
<li>Method: POST</li>
<li>ResourceType: OBJECT</li>
<li>RequestId: 871316565A038A65</li>
<li>HostId: BHbdP09UWX2xCvW6qqpOQYaGwy4lvgrVVYoSCaLrSBZ2TALZT5kk9Po7k6Akq2FYZ6NojFyINBk=</li>
</ul>
<hr/>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

响应来自S3,因为您可以在响应中看到RequestId和HostId。 S3支持POST http请求,但是您需要确保它具有Form-Data。具有POST请求的S3仅接受表单数据。 https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html

如果无法使用表单数据,请向CloudFront使用PUT请求。