![如何从我的网站访问基于局域网的 postgresql 数据库](https://linux22.com/image/562827/%E5%A6%82%E4%BD%95%E4%BB%8E%E6%88%91%E7%9A%84%E7%BD%91%E7%AB%99%E8%AE%BF%E9%97%AE%E5%9F%BA%E4%BA%8E%E5%B1%80%E5%9F%9F%E7%BD%91%E7%9A%84%20postgresql%20%E6%95%B0%E6%8D%AE%E5%BA%93.png)
我们有基于局域网的 .Net 应用程序和 Postgresql 8.1,现在我的任务是在网站上提供接口来读取和写入基于局域网的数据库上的两个表,我不知道从哪里开始,请帮我解决这个问题。
局域网:Windows NT 2003 .Net Postgresql 8.1
网站:PHP 5.3 Mysql
答案1
这个问题并没有经过深入研究,细节也不够。如何处理这个问题取决于所需安全级别的敏感度以及您预期的流量。但您可以采取一些方法。
- 在站点之间建立网络连接(即 VPN/ipsec)并直接连接到数据库。
- 设置 SSH 隧道并转发端口。有点“黑客”,您需要确保 SSH 隧道自动启动,这对于管理工作来说很好,但这并不是真正的生产解决方案。
- 在网站局域网中添加一个 Postgresql 服务器,并在站点之间复制数据(Postgresql 复制)。这听起来像是一个混乱的解决方案,因为网站界面需要写入局域网数据库……而且我假设局域网数据库也需要在本地写入。确实也需要 VPN。
- 设置 SSL,通过 NAT 向外部公开 Postgresql 的 SSL 端口,从网站连接到 LAN 的外部 IP,并通过防火墙的 IP 策略锁定。我个人不喜欢以这种方式公开数据库,即使通过 SSL,但如果它保存的数据不敏感,这可能是一个选择。使用 SSL 保护 TCP/IP 连接
当然,让两个独立的应用程序写入同一个底层数据库通常不是一个好主意 - 您需要正确锁定记录以确保不会覆盖任何数据。最好公开一个 API,让 Web 端应用程序可以请求数据并告诉 LAN 端应用程序要进行哪些更改。然后,您可以使用身份验证或基于 IP 的策略将其包装在 HTTPS 中,并简单地转发端口,这比 VPN 更简单、更可靠。