nginx至云峰的路线(至S3)
我试图通过Cloudfront(和S3)为静态站点提供服务器。我的S3 bucketnginx至云峰的路线(至S3),nginx,nginx-location,nginx-config,amazon-cloudfront,Nginx,Nginx Location,Nginx Config,Amazon Cloudfront,我试图通过Cloudfront(和S3)为静态站点提供服务器。我的S3 bucketmy bucket已启用静态网站托管。NGINX根据路径路由流量。位置/,/beta/,/static/app/转到cloudfront,因此我为 my-bucket.s3.amazonaws.com/beta=s3 my-bucket/beta my-bucket.s3.amazonaws.com/admin=s3 my-bucket/admin my-bucket.s3.amazonaws.com=s3 my
my bucket
已启用静态网站托管。NGINX根据路径路由流量。位置/
,/beta/
,/static/app/
转到cloudfront,因此我为
my-bucket.s3.amazonaws.com/beta=s3 my-bucket/betamy-bucket.s3.amazonaws.com/admin=s3 my-bucket/admin
my-bucket.s3.amazonaws.com=s3 my-bucket 并将行为映射到
/beta->S3我的桶/beta
/管理->S3我的桶/管理
默认(*)->S3我的存储桶 我有以下Nginx配置
server {
listen 80 default_server;
server_name localhost;
keepalive_timeout 70;
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript application/javascript text/xml application/xml application/xml+rss text/javascript;
location / {
proxy_pass http://XXXXXX.cloudfront.net;
proxy_set_header Host $host;
}
location /beta/ {
proxy_pass http://XXXXXX.cloudfront.net/beta/;
}
location /static/app/ {
rewrite ^/static/app/(.*)$ /$1 break;
proxy_pass http://XXXXXX.cloudfront.net;
}
}
当我试图打开指向这个Nginx的URL时,我得到
403 ERROR
The request could not be satisfied.
Bad request.
Generated by cloudfront (CloudFront)
Request ID: 3yYfFbg1ObQ4B-3oco1HYWK46CWh7E8XZOBVl_sdQ6rKMZ4JYZ_KeQ==
但是如果我将Nginx config指向我的bucket urlproxy\u passhttp://my-bucket.s3-website-us-west-2.amazonaws.com
像这样
server {
listen 80 default_server;
server_name localhost;
keepalive_timeout 70;
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript application/javascript text/xml application/xml application/xml+rss text/javascript;
location / {
proxy_pass http://my-bucket.s3-website-us-west-2.amazonaws.com/;
}
location /beta/ {
proxy_pass http://my-bucket.s3-website-us-west-2.amazonaws.com/beta/;
}
location /static/app/ {
rewrite ^/static/app/(.*)$ /$1 break;
proxy_pass http://my-bucket.s3-website-us-west-2.amazonaws.com;
}
}
一切正常
我需要做哪些更改才能通过cloudfront工作?删除
proxy\u set\u header Host$Host代码>可能会修复错误,因此请确认。。。但是你的设置有一个更大的问题。。。Nginx→ 云锋→ 在这个应用程序中,S3对我来说没有意义,除非您使用CloudFront的原因是因为bucket与Nginx位于不同的AWS区域,而且即使这样,理由也很软。您这样做的原因是什么?CloudFront仅用于缓存,没有其他原因。没有proxy\u set\u头主机$Host
main URL更改为cloudfront URL。您有proxy\u pass http://
,但cloudfront设置为将http重定向到HTTPS。更改为proxy\u passhttps://...
或使用查看器协议策略配置CloudFront:在每个缓存行为中使用HTTP和HTTPS。CloudFront在此设置中没有为您执行任何有意义的缓存。使用DNS→ Nginx→ 云锋→ S3,每个请求仍然通过您的Nginx服务器提供,CloudFront不会缓存浏览器附近的内容——它只是缓存Nginx服务器附近的内容,而Nginx服务器可能就在存储桶附近,因此不会获得任何好处。您可能需要的设置是DNS→ 云锋→ {Nginx或S3},其中CloudFront缓存行为匹配存储桶和Nginx服务器的路径,并选择目标。通过这种方式,CloudFront可以缓存在查看器附近,查看器总是首先与之联系代码>可能会修复错误,因此请确认。。。但是你的设置有一个更大的问题。。。Nginx→ 云锋→ 在这个应用程序中,S3对我来说没有意义,除非您使用CloudFront的原因是因为bucket与Nginx位于不同的AWS区域,而且即使这样,理由也很软。您这样做的原因是什么?CloudFront仅用于缓存,没有其他原因。没有proxy\u set\u头主机$Host
main URL更改为cloudfront URL。您有proxy\u pass http://
,但cloudfront设置为将http重定向到HTTPS。更改为proxy\u passhttps://...
或使用查看器协议策略配置CloudFront:在每个缓存行为中使用HTTP和HTTPS。CloudFront在此设置中没有为您执行任何有意义的缓存。使用DNS→ Nginx→ 云锋→ S3,每个请求仍然通过您的Nginx服务器提供,CloudFront不会缓存浏览器附近的内容——它只是缓存Nginx服务器附近的内容,而Nginx服务器可能就在存储桶附近,因此不会获得任何好处。您可能需要的设置是DNS→ 云锋→ {Nginx或S3},其中CloudFront缓存行为匹配存储桶和Nginx服务器的路径,并选择目标。通过这种方式,CloudFront可以缓存在查看器附近,而查看器总是先与它联系。