Простой поддомен с Express - PullRequest
       9

Простой поддомен с Express

0 голосов
/ 26 апреля 2018

Я пытаюсь использовать Express в качестве сервера в стеке MEAN на AWS.Однако я столкнулся с проблемой, пытаясь настроить поддоменов.У меня есть основное доменное имя domain.com, и у меня есть идентификатор app.domain.com. Однако я перепробовал все, что нашел в Интернете, чтобы записать функциональность в файл server.js, и ничего не работает.Как я могу легко сделать это, чтобы вторая функция вместо загрузки на порт 8000 загружалась в моем поддомене app.domain.com?Заранее спасибо!

var express = require('express');
// Main Website
var web = express();
web.get('/', function (req, res){
    res.sendFile('/web/index.html', { root: '.' })
});

var port = 9000;
web.listen(port);
console.log('Web Listening on port', port);

//Main Application
var app = express();
app.get('/', function (req, res){
    res.sendFile('/app/index.html', { root: '.' })
});

var port = 8000;
app.listen(port);
console.log('Web Listening on port', port);

Обновление:

Я пытался использовать Vhost здесь, но он загружает одну и ту же вещь как для основного домена, так и для субдомена, и поэтому он не работает.Вот код, который я использовал:

var express = require('express');
var connect = require('connect');
var http = require('http');
var vhost = require('vhost');

// Main Website
var web = express();
web.get('/', function (req, res){
    res.sendFile('/web/index.html', { root: '.' })
});

var port = 9000;
web.listen(port);
console.log('Web Listening on port', port);

//Main Application
var app = connect()

app.use(vhost('app.domain.com', function (req, res) {
      res.sendFile('/app/index.html', { root: '.' })

  httpServer.emit('request', req, res)
}))

app.listen(8000)

Мне не нужно, чтобы они были на отдельных портах, это было просто то, что я пытался изначально.Но в любом случае не работает до сих пор ..

Ответы [ 3 ]

0 голосов
/ 26 апреля 2018

Если вы используете Route53, я рекомендую вам использовать Records Set для перенаправления как домена, так и субдомена на один и тот же экземпляр ec2 через IP-адрес, тогда вы можете использовать ngix, как в комментариях в этом сообщении введите описание ссылки здесь

При использовании балансировщика нагрузки (ALB) генерируется минимальная стоимость 21,96USD, но при использовании Route53 она составляет минимум 1USD или менее.

Если вы не хотите использовать прокси, такой как nginxу вас может быть хостинг для веб-сайта s3 с низкой стоимостью, около 6 долларов США и маршрутизация по маршруту 53 минимум на 1 доллар США в месяц, и если у вас есть службы API REST, вы можете звонить из внешнего интерфейса в ваш экземпляр в зависимости от того, к какому сайту обращаются без проблем.

С уважением,

0 голосов
/ 27 апреля 2018

За пределами узла node.js не нужно ничего обслуживать на одном порту.Это просто вопрос маршрутизации на основе заголовка http.

var express = require('express');
var http = require('http');
var vhost = require('vhost');

// Main Website
var webapp = express();
webapp.get('/', function (req, res){
    res.sendFile('/web/index.html', { root: '.' });
});

//Main Application
var mainapp = express();

mainapp.use(function (req, res) {
    res.sendFile('/app/index.html', { root: '.' });
}));


//Virtual Routing Application

var virtualapp = express();

app.use(vhost('app.domain.com', webapp));
app.use(vhost('domain.com', mainapp));
app.use(vhost('www.domain.com', mainapp));

app.listen(9000);
0 голосов
/ 26 апреля 2018

Поскольку вы используете AWS, вы можете использовать Application Load Balancer для достижения ваших целей.

Установите ALB и укажите оба домена на ALB CNAME.

Затем вам нужно будет создать 2 целевые группы, одну для app.domain.com, а другую для domain.com.

Целевая группа: Приложение

protocol: HTTP
port: 8000

Целевая группа: Веб

protocol: HTTP
port: 9000

Присоедините ваш экземпляр EC2 к обеим целевым группам

Target group > Targets > Edit > Add to registered

Наконец вам нужно будет добавить прослушиватель HTTP к вашему ALB, иустановить правила для переадресации каждого домена в целевую группу.

enter image description here

enter image description here

Послеправила устанавливаются, когда вы вводите app.domain.com, ALB будет перенаправлять запрос вашему экспресс-приложению, прослушивающему порт 8000, а при просмотре domain.com будет использоваться прослушивающее порт 9000.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...