2016-01-25 5 views
2

Быстрый вопрос о правильной инфраструктуре сервера для приложения Node, которое я создаю. Приложение имеет веб-интерфейс, построенный с помощью Angular, который использует API, который я создал в узле. Этот API также будет в конечном итоге доступ к мобильному приложению. Что касается серверной инфраструктуры, какой самый быстрый/самый чистый способ сделать это? Обычно я делаю простую 3-х серверную настройку с сервером узлов, сервером mongodb и сервером nginx для работы в качестве прокси-сервера, а сервер узлов обслуживает все статические файлы для веб-интерфейса, но я не уверен, что это лучшая практика здесь. Так что мои два вопроса:Как обслуживать статический контент для приложения Node.js?

  1. было бы лучше, чтобы сервер Nginx обслуживать все статический контент для веб-интерфейса и только Node служат API?

  2. Приложение позволяет пользователям загружать файлы, которые будут храниться на сервере. Где лучше всего хранить и обслуживать эти файлы?

ответ

0

Вот основной Nginx конфигурации для обслуживания статического контента и передать все остальное в приложение Node.js:

location/{ 
     try_files $uri $uri/ @backend; 
    } 

    location @backend { 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_set_header X-NginX-Proxy true; 

     proxy_pass http://127.0.0.1:3000; 
     proxy_redirect off; 
    } 

Я рекомендую имея Nginx служить статический контент, потому что Nginx делает отличную работу в что освобождает Node.js, чтобы сосредоточиться на обслуживании приложения с меньшим количеством запросов.

Загрузка файла осуществляется в вашем Node.js. Единственная часть, обрабатываемая в Nginx, - это настройка предела размера загрузки файлов. Вы можете ограничить это к конкретным location блоков по мере необходимости:

client_max_body_size 20m; 

Есть несколько файлов Загрузка пакетов для Node.js. Вы можете выбирать между решениями, которые передают загрузки с помощью интерфейса событий, например connect-busboy, или более традиционный подход, когда весь запрос полностью завершен, прежде чем вы получите к нему доступ.

Где вы храните свои загружаемые материалы прямо сейчас. Все более популярным является передача файлов в службу хранения, например, Amazon S3, а не их локальное хранение. S3 обеспечивает дешевое хранилище, высокую пропускную способность и избыточное хранилище, но локальный каталог также может удовлетворить ваши потребности.

0

В зависимости от требований, предъявляемых к вашему приложению, установка я использую:

  • Heroku для Node.js веб-сервиса (либо с MongoDB или PostgreSQL для БД)
  • s3 Амазонки для моего статического активы, если они должны быть частными, вы можете настроить aa cloudfront distribution для обслуживания частных активов из вашего s3-ведра.

Если вы ищете быстрый и чистый, я бы порекомендовал использовать героку, но, опять же, зависит от ваших конкретных требований.

https://devcenter.heroku.com/articles/getting-started-with-nodejs#introduction

Смежные вопросы