HTTP и nodeJS на отдельных серверах

1

У меня есть два веб-сайта:

1) httpwebsite.com, где я запускаю свое веб-приложение, которое использует APACHE, PHP и MYSQL;

2) wss.com, где я запускаю сервер узла nodeJS, используемый для многопользовательской игры;

Я хочу разместить файлы на стороне клиента javascript, которые взаимодействуют с сервером websocket, на httpwebsite.com, поэтому мне не нужно настраивать HTTP-сервер на узлеJS по многим причинам, например, безопасность и отсутствие опыта использования nodeJS в качестве HTTP-сервера,

Я хочу использовать nodeJS только для сервера websocket, для удобства производительности и гибкости, среди многих других.

Я слышал, что политика одинакового происхождения ограничивает связь с httpwebsite.com с помощью wss.com, но может ли она быть переконфигурирована, чтобы фактически разрешить связь между двумя разными доменами, которые хотят общаться друг с другом нарочно?

Есть ли у меня другие возможности, чем запуск HTTP-сервера на сервере nodeJS?

Теги:

2 ответа

1

Вы можете использовать CORS для защищенных запросов из одного домена в другой домен.

http://www.html5rocks.com/en/tutorials/cors/

0

2 варианта:

  1. Вы можете добавить заголовки CORS на wss.com, чтобы разрешить доступ к веб-сайту, чтобы загрузить его ресурсы. Ссылка Мэтта должна объяснить, как это работает, и вам просто нужно добавить этот HTTP-заголовок на каждый сервер узла, к которому вам нужно получить доступ.

  2. Вы можете проксировать свои запросы через сервер Apache на сервере узлов. Поэтому веб-браузер думает, что он разговаривает с сервисом по одному и тому же происхождению. Это часто используется только для того, чтобы ваш веб-сервер публично доступен, а ваш сервер приложений (работающий узел) не был напрямую доступен и защищен за брандмауэром, хотя, очевидно, Apache должен иметь доступ к нему.

Вы можете использовать эту конфигурацию в Apache для достижения варианта 2 для перенаправления вызовов http://website.com/api на службу, запущенную в wss.com на порту 3000.

#send all /api requests to node
ProxyPass /api http://wss.com:3000
#Optionally change all references to wss.com to this domain on return:
ProxyPassReverse /api http://wss.com:3000
  • 0
    Моей целью было не задействовать два сервера для одного запроса. Делая это через Apache в качестве сервера-посредника, создается впечатление, что Apache будет иметь почти такую же нагрузку, как сервер NodeJS. Моя идея состояла в том, чтобы использовать Apache для обслуживания статических файлов (после того, как проигрыватель войдет в систему и другие простые вещи), а затем оставить NodeJS для работы с «игровой нагрузкой». Возможно, я ошибаюсь, и, возможно, ваше решение не предполагает добавления слишком большой нагрузки на Apache для пересылки. Можете ли вы прокомментировать это?
  • 0
    Тогда используйте CORS. Но, как я уже сказал, это довольно распространенный вариант использования, и нагрузка на Apache для пересылки запросов будет незначительной. Веб-серверы специально разработаны для обработки высокой нагрузки. Особенно, если они просто обслуживают статический контент и / или прокси-запросы и не выполняют много работы самостоятельно. Кроме того, это дает дополнительные преимущества для безопасности и производительности. Например, SSL-прекращение может быть в одной точке, вместо того, чтобы иметь SSL на каждом сервере узла, меньше портов должно быть открыто миру (обычно это просто порты 80 и 443), могут быть установлены другие функции, такие как WAF ... и т. Д.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню