Nginx - proxy_pass в хранилище Google не использует директиву index - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь установить свое корневое (/) местоположение для передачи в корзину Google.

Вот моя конфигурация:

    listen 80;      
    location / {                
            rewrite /(.*) /$1       break;
            proxy_pass              https://storage.googleapis.com/my-google-bucket-name/$1$is_args$args;
            proxy_redirect          off;
            index                   my_main.html;
            proxy_set_header        Host "storage.googleapis.com";
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_set_header        Upgrade $http_upgrade;
            proxy_set_header        Connection "upgrade";
    }     

Кажется, это работает, но директива index не устанавливает страницу по умолчанию (my_main.html)

например. когда я перехожу на http://my_enginx_url/ вместо того, чтобы перейти к "my_main.html", я попадаю на корневую страницу корзины Google, которая показывает файл XML со всеми файлами в этой корзине.

P.S Оба

http://my_enginx_url/another_page.html,

http://my_enginx_url/yet_another_page.html

работают нормально.

Есть идеи?

1 Ответ

0 голосов
/ 03 июля 2018

Поскольку директива index сообщает Nginx имена файлов для поиска в вашей файловой системе, которые подходят для обслуживания запроса, заканчивающегося /

Вы передаете запрос на другой сервер, поэтому здесь он не применим.

Чтобы достичь желаемого результата, создайте другую директиву местоположения выше текущей и используйте =, чтобы сообщить Nginx, что он обрабатывает только запросы на точное совпадение с http://my_enginx_url/

Примерно так:

location = / {
    proxy_pass https://storage.googleapis.com/my-google-bucket-name/my_main.html;
    ......
}
...