Как перенаправить на другой порт на том же хосте в Meteor?

Я интегрирую блог Ghost, который работает через порт 2368, в мое приложение Meteor, которое работает через порт 3000. Ghost — это отдельный экземпляр. .

В приведенном ниже файле шаблона гиперссылка в приложении Meteor указывает на отдельный экземпляр блога Ghost.

<template name="header">
    <header class="navbar">
        <div class="navbar-inner">
           <div class="top-nav">
                <div>
                    <a href="{{pathFor 'home'}}">Home</a> -                         
                    <a href="http://localhost:2368">Blog</a> - 
                </div>                                        
           </div>
        </div>
    </header>
</template>

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

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


person Daniel Qiu    schedule 22.04.2014    source источник


Ответы (1)


Для этого можно использовать Meteor.absoluteUrl([path], [options]) (http://docs.meteor.com/#meteor_absoluteurl).

Например, HTML:

<a href="{{rooturl}}:2368">Blog</a>

и JS:

Template.header.rooturl = Meteor.absoluteUrl("");
person Christian Fritz    schedule 22.04.2014
comment
У меня есть локальный хост: 3000/: 2368. Нужно ли мне вручную отключать :3000/, например: Template.header.rooturl = Meteor.absoluteUrl().split(':')[1];? Или есть простой способ? Они должны поддерживать функцию получения только имени хоста. Вторая проблема заключается в том, что я всегда получаю локальный хост вместо своего реального домена даже в продакшене. - person Daniel Qiu; 23.04.2014
comment
В рабочей среде, в зависимости от того, как вы развертываете, вам необходимо вручную установить переменную среды ROOT_URL перед запуском метеора или вашего пакета, чтобы установить правильный URL-адрес. Что касается изменения результата absoluteUrl, да, я не знал, что порт был включен, но это имеет смысл. Лучше всего использовать пакет url и просто вызвать url.parse для полученного URL-адреса, а затем просто взять протокол и имя хоста из возвращаемого объекта. - person Christian Fritz; 23.04.2014