Если вы используете что-то вроде node http-proxy или nginx, вы можете запускать каждый отдельный сайт на разных локальных портах, а затем отображать имя домена обратно. Я использую http proxy, но другие любят nginx.
Для этого вам нужно будет добавить записи DNS, разрешающие IP-адрес, на котором работает ваш обратный прокси. Затем, например, запрос на порт 80 будет отображаться обратно на localhost: 3000.
Это позволяет для каждого приложения работать изолированно и в отдельных процессах с других сайтов. Они не могут разрушить друг друга. У вас также нет проблем с пространством имен, в которых оба приложения заявляют один и тот же путь.
Моего app.js для HTTP прокси-сервера выглядит следующим образом:
var proxyPort = 80;
var http = require('http');
var httpProxy = require('http-proxy');
var options = {
router: {
'localhost': '127.0.0.1:3000',
'somesite.com': '127.0.0.1:3000',
'othersite.com': '127.0.0.1:4000'
}
};
console.log('Proxy Routing:')
console.log(options);var options = {
console.log();
var proxyServer = httpProxy.createServer(options);
proxyServer.listen(proxyPort);
console.log('Proxy listening on port ' + proxyPort);
Вы можете также маршрут с дорожками. Смотрите это: https://github.com/nodejitsu/node-http-proxy/issues/232
Так больше как ваш оригинальный запрос, вы можете сделать:
router: {
'myhost.com/appA': '127.0.0.1:8080',
'myhost.com/appB': '127.0.0.1:9090/appB',
'myhost.com/appC': '127.0.0.1:9090/appC'
}
};
Другим вариантом является просто обеспечить маршрут/страницы для каждого клиента, а затем это просто проблема DNS. Вы должны настроить DNS так, чтобы все доменные имена разрешали один IP-адрес, на котором работает ваше приложение. Это имеет некоторые недостатки:
- domain1.com/user1, domain1.com/user2, domain2.com/user1 и domain2.com/user2 бы все работы, которые вы, вероятно, не хотят.
- Вы управляете всем кодом или поставляете код? Если это код, предоставленный пользователем, тогда вам нужна изолированность, поэтому отдельные приложения.
- Вам все еще, вероятно, нужен прокси-сервер http для запуска на порту 80 в linux и не запускается как sudo.
Вы указываете их на разных экземплярах Node.js? Или все-таки приложение? – Brad
То, что вы упомянули в примере, путается: 'mysite.com/их-сайт' не будет находиться в отдельном домене, это другой маршрут. Обычно у вас есть домен, например 'domain.com' и подобъект, например' mail.domain.com'. Вы хотите перенаправить такие запросы или обработать их? – user568109
@ user568109 Извините за путаницу. mysite.com/their -site будет их страницей в моем приложении. У них может быть собственный домен, зарегистрированный в другом месте, и я бы хотел, чтобы у них была возможность сопоставить их страницу на моем сайте. –