我正在构建 VPS 服务器。在此服务器上,我需要启动 Java 应用程序和 PostgreSQL 数据库。Java 应用程序是在端口 8080 上运行的 Web 服务,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/
- 收到错误
有什么办法吗,如何设置这个状态?
答案1
DNS 仅指向 IP 地址,每个服务应根据命名主机做出响应或给出错误,例如,webservice 应该对“db.example.com:8080”给出 404 错误。
因此,您要做的是将 postgres 配置为仅接受特定主机,并且应将 java webservice 配置为响应特定主机名(可能无法实现)。
在 postgres 中你应该使用如下配置选项设置主机名:
listen_addresses = 'db.example.com'
答案2
Dns 仅将域名转换为 IP 地址。第 2 层的服务器不知道它访问了什么域名。它可以在第 7 层功能上处理。例如,在 apache 中不要为 db.example.com 设置 vhost。因为您的 apache(第 7 层 osi)知道它从域名访问了什么,他从自己的协议 http 请求中知道。