Я покупаю 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-адреса, каждая служба затем должна отвечать или выдавать ошибки на основе именованного хоста, webservice может выдать ошибку 404, например, для "db.example.com:8080".
Итак, вы хотите настроить postgres так, чтобы он принимал только определенный хост, а веб-сервис java должен быть настроен для ответа на конкретное имя хоста (может быть невозможно).
в postgres вы должны установить имя хоста с опцией конфигурации, как показано ниже:
listen_addresses = 'db.example.com'
DNS переводит только доменное имя в IP-адрес. Ваш сервер на уровне 2 не знает, с каким доменным именем он обращался. Он может обрабатываться на уровне 7 функции. Например, в apache не устанавливайте vhost для db.example.com. поскольку ваш apache (уровень 7 osi) знает, к какому из доменного имени он обращается, он знает из своего HTTP-запроса протокола.