Добавление заголовков ответов CORS на nginx сервер с обратным прокси - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть простой локальный html с некоторыми JS, которые я в настоящее время обслуживаю через Docker - nginx на локальном хосте: 8080 через

docker run -it --name nginx_ol -v  ${PWD}:/usr/share/nginx/html:ro -p 8080:80 -d nginx:alpine

JS должен получить JPG с («восходящего»?) сервера, например,

   var url = http://example.com/foo/bar.jpg
    fetch(url, {method: 'GET', mode:'cors'})

Сервер не настроен на отправку соответствующих CORS-заголовков. Попытка получить изображение таким образом приводит к [...] Origin localhost:8080 is not allowed by Access-Control-Allow-Origin, как и ожидалось.

В моем понимании, мне нужно

  1. настроить nginx для обратного прокси-ресурса для моего локального хоста, пока добавление необходимых заголовков CORS
  2. Вместо этого сделайте запрос к прокси-расположению

Т.е. проксируйте расположение изображения с http://example.com/foo/bar.jpg до http://localhost/foo/bar.jpg и соответствующим образом настройте URL выборки.

Будучи полностью зеленым с точки зрения nginx / прокси, я прочитал документы по добавлению заголовков CORS для серверов Я управляю и видел примеры добавления заголовков CORS к прокси-серверам вот так .

Если бы я хотел прокси-запросы к localhost:8080/foo до http://example.com/foo, я бы ожидал, что что-то вроде следующего сделает эту работу:

 server {
   listen 80;
   server_name localhost;

   add_header 'Access-Control-Allow-Origin';
   add_header ...

    location / { 

      proxy_set_header Host $host;

      add_header 'Access-Control-Allow-Origin' '*';
      add_header 'Access-Control...
      proxy_redirect off;
      proxy_set_header host $host;
      proxy_set_header X-real-ip $remote_addr;
      proxy_set_header X-forward-for $proxy_add_x_forwarded_for;

      proxy_pass http://example.com/;
    }
}

Для URL запроса localhost:8080/foo/bar.jpg Я получаю GET 404 (Not found), что говорит мне, что ничего подобного не происходит.

Извините, что это вопрос базового c недоразумения, но я уверен, что такие пользователи, как я, которые борьба с настройкой прокси-сервера принесет пользу любому толчку в правильном направлении :)

...