маршрут nginx к облачному фронту (до S3) - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь сервировать статический сайт через Cloudfront (и S3). У меня S3 bucket my-bucket включен со статическим хостингом. NGINX направляет трафик в зависимости от пути. location /, /beta/, /static/app/ переходит в облачный фронт, поэтому я создал имя домена и путь к источнику & идентификатор источника для

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-bucket

И сопоставленное поведение
/ 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;
    }
}

Когда я пытаюсь открыть свой URL, который указывает на этот Nginx, я получаю

403 ERROR
The request could not be satisfied.
Bad request. 
Generated by cloudfront (CloudFront)
Request ID: 3yYfFbg1ObQ4B-3oco1HYWK46CWh7E8XZOBVl_sdQ6rKMZ4JYZ_KeQ==

Но если я укажу конфигурацию Nginx на мой URL-адрес корзины proxy_pass http://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;
    }
}

все работает как положено.

Что мне нужно изменить, чтобы оно работало через облачный фронт?

...