Метеор: как получить имя хоста, серверную сторону

На клиенте я могу использовать window.location.hostname для получения имени хоста. Как я могу получить то же самое на сервере? Мне нужно, чтобы это работало за прокси-сервером Apache, к сожалению Meteor.absoluteUrl() дает мне localhost:3000. Я также хочу, чтобы он работал для разных доменов, я хочу, чтобы одно приложение Meteor давало разные результаты для разных доменов.

Этот вопрос несколько связан: Получить имя хоста текущего запроса в node.js Express

Ответы

Ответ 1

Meteor.absoluteUrl(), учитывая, что ваша переменная ROOT_URL env установлена ​​правильно.

См. следующие документы: http://docs.meteor.com/#meteor_absoluteurl.

Meteor не знает внешний адрес прокси-сервера, за которым он сидит, и (виртуальный) домен, к которому был обращен этот прокси-сервер, должен быть перенаправлен в приложение Meteor, чтобы он выполнял то, что вы просите для. Я не думаю, что это в настоящее время поддерживается.

Ответ 2

В соответствии с этим вы можете получить заголовок Host внутри вызовов Meteor.publish() и Meteor.methods(), обратившись к:

this.connection.httpHeaders.host

В другом месте приложения, вероятно, трудно определить заголовок Host, который используется для подключения.

Ответ 3

Если вы хотите имя хоста сервера, как указано в /etc/hostname, например:

С meteorite:

$ mrt add npm

В коде сервера:

os = Npm.require('os')
hostname = os.hostname()

Это не связано с заголовком хоста, входящим в входящий запрос.

обновленный ответ с некоторыми словами chmac из комментария ниже

Ответ 4

В любом файле метеоритов на стороне сервера вы можете добавить:

if (Meteor.isServer) {

  Meteor.onConnection(function(result){
    var hostname = result.httpHeaders.referer; //This returns http://foo.example.com
  });
}