Метеор: как получить имя хоста, серверную сторону
На клиенте я могу использовать 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
});
}