Nginx проксирует Nodejs (Dokku). Заголовки ответа CORS не проходят

Nginx проксирует Nodejs (Dokku). Заголовки ответа CORS не проходят

Я использую Dokku для размещения своего приложения на DigitalOcean. Доккузапустите nginx 1.6 для проксирования приложений Docker, имитирующих среду, похожую на Heroku. Все приложения используют похожие конфигурации по умолчанию, как показано ниже.

Мой сервер Node.js используетПромежуточное программное обеспечение CORSчтобы сообщить браузеру, что необходимо разрешить www.myapp.com совершать вызовы к api.myapp.com:

Это отлично работает на моем локальном компьютере. Когда я его развертываю, я получаю ошибку CORS в браузере:

XMLHttpRequest cannot load https://api.myapp.com/r_u_up. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://www.myapp.com' is therefore not allowed access. The response had HTTP status code 502.

Итак, чё за фигня, всё кончено.

я нашел этоКонфигурация nginx CORSно это выглядит очень грубо. Это старый код или лучший способ? Этотплагин использует эту конфигурацию.

Я бы предпочел более простую конфигурацию, которая просто пропускает заголовки ответа. Моему приложению не нужен nginx для их перехвата. Как мне это настроить?

Файлы nginx.conf приложения:

upstream www { server 172.17.0.135:5000; }
server {
  listen      [::]:80;
  listen      80;
  server_name www.myapp.com ;
  return 301 https://www.myapp.com$request_uri;
}

server {
  listen      [::]:443 ssl spdy;
  listen      443 ssl spdy;
  server_name www.myapp.com;


  keepalive_timeout   70;
  add_header          Alternate-Protocol  443:npn-spdy/2;
  location    / {
    proxy_pass  http://www;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection upgrade;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Forwarded-Port $server_port;
    proxy_set_header X-Request-Start $msec;
  }
  include /home/dokku/www/nginx.conf.d/*.conf;
}

решение1

Обновление: оказывается, CORS — это зомбированная, безумная спецификация ходячих мертвецов, и да, сделать это с помощью конфигурации nginx — лучший способ.

http://enable-cors.org/

Причина, по которой nginx является лучшим решением, заключается в том, что nginx — самый быстрый и близкий к клиенту процесс.

Если nginx может обработать запрос, не затрагивая ваше приложение (node.js, php, rails и т. д.), то ваше приложение будет легче масштабироваться и работать быстрее.

Связанный контент