nginx - 到云端的 nginx 路由(到 S3)
问题描述
我正在尝试通过 Cloudfront(和 S3)服务器静态站点。我my-bucket
使用静态网站托管启用了 S3 存储桶。NGINX 根据路径路由流量。location /
, /beta/
,/static/app/
去云端,所以我创建了Origins Domain Name 和 Path & Origins ID for
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-我的桶
并将行为映射到
/beta -> S3-my-bucket/beta
/admin -> S3-my-bucket/admin
默认 (*) -> S3-my-bucket
我有以下 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==
proxy_pass http://my-bucket.s3-website-us-west-2.amazonaws.com
但是如果我像这样将 Nginx 配置指向我的存储桶 url
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 工作?
解决方案
推荐阅读
- angular - 使用 ngFor 为元素创建唯一 ID
- html - 如何在 JSP 上获取当前根 URL
- docker - 如何传递从 GitHub 操作收到的环境变量
- python - 调试python库
- r - 在 R 中使用管道设置数据
- python - 如何在 MacOS 10.14 上为 Python 安装库 LIBSVM 以用于 Anaconda3
- javascript - 使用 for loop 和 map 函数使用 hsl 和 javascript 制作动态彩色圆圈
- shell - 我需要使用 shell 脚本创建一个包含所有 hashcorp 保险库键值对数据的文件
- mysql - 在不使用索引的情况下防止插入重复项
- php - 循环检查多维数组 - PHP