我创建了一个与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>
答案 0 :(得分:0)
响应来自S3,因为您可以在响应中看到RequestId和HostId。 S3支持POST http请求,但是您需要确保它具有Form-Data。具有POST请求的S3仅接受表单数据。 https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html
如果无法使用表单数据,请向CloudFront使用PUT请求。