Назад | Перейти на главную страницу

Установка двух поддоменов на одном сервере

Покупаю VPS сервер. На этом сервере мне нужно запустить приложение Java и базу данных PostgreSQL. Приложение Java - это веб-служба, работающая на порту 8080, а база данных PostgreSQL работает на порте по умолчанию 5432.

НОТА: Я знаю, что я разместил базу данных и приложение на одном сервере - это не лучшее решение, но это всего лишь тестовая среда, и мой босс не хочет вкладывать средства в дополнительный VPS-сервер.

VPS имеет IP-адрес 1.2.3.4. Это связано с доменом example.com.

Прямо сейчас:

У меня в DNS есть такая настройка:

example.com.        1800    IN  A   1.2.3.4
db.example.com.     1800    IN  A   1.2.3.4
ws.example.com.     1800    IN  A   1.2.3.4

... и это гласит, когда я вызываю URL:

ws.example.com:8080/ - подключиться к веб-сервису

ws.example.com:5432/ - подключиться к базе данных

db.example.com:5432/ - подключиться к базе данных

db.example.com:8080/ - подключиться к веб-сервису

Я нуждаюсь:

ws.example.com:8080/ - подключиться к веб-сервису

ws.example.com:5432/ - получить ошибку

db.example.com:5432/ - подключиться к базе данных

db.example.com:8080/ - получить ошибку

Есть ли способ установить это состояние?

DNS переводит только доменное имя в IP-адрес. Ваш сервер на уровне 2 не знает, с каким доменным именем он обращался. Он может обрабатываться на уровне 7 функции. Например, в apache не устанавливайте vhost для db.example.com. поскольку ваш apache (уровень 7 osi) знает, к какому из доменного имени он обращается, он знает из своего HTTP-запроса протокола.

DNS должен указывать только на IP-адреса, каждая служба должна затем отвечать или выдавать ошибки в зависимости от именованного хоста, например, веб-служба может выдать ошибку 404 для «db.example.com:8080».

Итак, что вы хотите сделать, так это настроить postgres для приема только определенного хоста, а веб-сервис java должен быть настроен для ответа на определенное имя хоста (может быть невозможно).

в postgres вы должны установить имя хоста с опцией конфигурации, как показано ниже:

listen_addresses = 'db.example.com'