Покупаю 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'