Запустите Ghost как модуль NPM на поддомене с помощью Node.JS

Есть ли способ запустить Ghost на поддомене с помощью Node.JS? Я могу нормально запустить его на Node.JS, например:

App.Modules.Ghost = require('ghost'); /**< Ghost module. */
App.Apps.Ghost = App.Modules.Ghost({ config: '/Assets/Ghost/Config.js'.LocalFilePath }); /**< Create Ghost app. */

Затем я могу перейти на http://example.com/ghost/ и просмотреть свой блог. Хотя сейчас это работает, я хочу иметь возможность просматривать свой блог по адресу http://blog.example.com/ с использованием Node.JS.


person rgajrawala    schedule 29.06.2014    source источник


Ответы (1)


К сожалению, способ работы сети препятствует этому в желаемом вами контексте. Для достижения такой функциональности вам понадобится прокси-сервер, который будет работать перед всем приложением. Я бы предложил NginX для этой возможности из-за его скорости и широкого распространения.

Почему это невозможно?

В этом смысле сеть - это система, в которой вы привязываетесь к IP и порту. Когда вы выполняете привязку, ничто другое не может привязаться к тому же IP / порту. Поскольку домен (и субдомен) просто указывают на IP-адрес, невозможно разделить эти соединения на сетевом уровне. Вот почему был добавлен HTTP-заголовок Host.

Как это делает NginX?

NginX анализирует заголовок Host и может отправить соединение на ваш Ghost-сервер, если вы хотите, чтобы оно было перенаправлено. Это также позволяет перенаправить основной домен (http://example.com) на любой понравившийся веб-сайт, для чего используйте разные приложения и тому подобное на одном IP и одном порте.

Этот ответ содержит лучшие инструкции о том, как достичь этой функциональности.

person Brendan    schedule 29.06.2014
comment
Возможно, чтобы он отвечал только на поддомен, однако было бы невозможно, чтобы другая программа одновременно использовала обычный домен (я предположил, что это то, что вы хотели) - person Brendan; 30.06.2014