Я рекомендую вам разделить конечные точки вашего сервиса на поддомены.
Конечная точка службы
Конечная точка — это точка подключения, в которой отображаются HTML-файлы или активные страницы сервера. Конечные точки предоставляют информацию, необходимую для обращения к конечной точке веб-службы. Конечная точка предоставляет ссылку или спецификацию, которая используется для определения группы или семейства свойств адресации сообщений и предоставления сквозных характеристик сообщения, таких как ссылки на источник и место назначения конечных точек, а также идентичность сообщений для обеспечения единообразия. адресация независимых сообщений. Конечной точкой может быть ПК, КПК или терминал торговой точки Ссылка: Определение конечной точки службы.
Рекомендуемый поддомен для вашей конечной точки Frontend:
- https://
www
.example.com
- https://example.com В этом случае вам необходимо перенаправить на субдомен
www
Для вашей конечной точки Backend вы можете использовать все, что хотите, но рекомендуемые субдомены для Backend:
- https://
api
.example.com (наиболее часто используемый)
- https://
backend
.example.com
Итак, в вашем случае рекомендации такие:
Вы можете сделать это, используя обратный прокси-сервер, такой как Nginx, или получить субдомен из объекта запроса в NodeJs.
Nginx — это веб-сервер, который также можно использовать в качестве обратного прокси-сервера, балансировщика нагрузки и кэша HTTP. Программное обеспечение было создано Игорем Сысоевым и впервые публично выпущено в 2004 году. В 2011 году была основана одноименная компания для оказания поддержки.
Первый подход
Использование Nginx в качестве балансировщика нагрузки HTTP
Вы можете настроить Nginx для балансировки запросов к вашему серверу следующим образом:
http {
upstream backend {
server localhost:5000;
}
upstream frontend {
server localhost;
}
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass https://backend;
}
}
server {
listen 80;
server_name www.example.com example.com;
location / {
proxy_pass https://frontend;
}
}
}
Второй подход
Используйте expressjs, чтобы получить субдомен из объекта запроса.
req.subdomains
Массив поддоменов в доменном имени запроса.
Документация:
// Host: "tobi.ferrets.example.com"
req.subdomains
// => ["ferrets", "tobi"]
В вашем случае ваши возможные поддомены: www
или api
// Host: "www.example.com"
req.subdomains
// => ["www"]
Or
// Host: "api.example.com"
req.subdomains
// => ["api"]
Вот как вы должны обработать запрос в своем server.js
var subDomain = req.subdomains[0];
if (subdomain === 'api') {
processBackendRequest();
} else {
processFrontendRequest();
}
17.01.2018