![将域指向没有 HTTPD 的服务器](https://linux22.com/image/782115/%E5%B0%86%E5%9F%9F%E6%8C%87%E5%90%91%E6%B2%A1%E6%9C%89%20HTTPD%20%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
我在 Oracle Cloud Free 层上有一个 VM,并且有专用 IPv4。我在此服务器上安装了 MariaDB。我想将域名 (example.com) 指向该机器,以便通过域访问 MariaDB,例如在 PHP 代码中使用 example.com:3306 而不是 xxx.xxx.xxx.xxx:3306?
如果不安装 nginx/apache httpd,我该怎么做?
答案1
首先,您登录到可以控制 example.com 设置的任何网站。然后,您正确设置您的名称服务器:在这里,您可以注册并使用 cloudflare 作为免费简便的解决方案,并将其名称服务器用于您的域名(例如,他们可能会为您提供 fay.ns.cloudflare.com 和 ara.ns.cloudflare.com)。如果您这样做了,那么是时候添加一些 DNS 记录了:登录您的 cloudflare 帐户,并在 DNS 部分创建一个 A 记录(一个 ipv4 地址),将您的 @(它表示没有任何子域的 example.com)指向您的 xxx.xxx.xxx.xxx。它应该可以工作。
如果您不想拥有自己的域名并执行所有这些名称服务器操作,那么有一个本地解决方案:您可以告诉您的开发机器,example.com 应该解析为 xxx.xxx.xxx.xxx。在 Linux 中,您可以通过编辑 /etc/hosts 文件并附加此行来实现:
xxx.xxx.xxx.xxx example.com
但请注意,第二种解决方案仅适用于具有这种配置的机器,并且它不像前一种解决方案那样具有全局性。
无论哪种情况,您都不需要设置任何网络服务器。DNS 与网络无关,无论是否存在网络服务器,甚至地址属于真实服务器或只是一个随机数,它都会发生。
就您而言,重要的是端口可从外部访问(正确配置防火墙),并且某些东西不仅在本地(127.0.0.1:3306)监听它,而且还在 xxx.xxx.xxx.xxx:3306 上监听。通常,您可以通过监听 0.0.0.0:3306 并使用 0.0.0.0 作为通配符来监听所有这些端口。
答案2
运行或访问 MySQL 或 MariaDB 不需要 httpd。如果您不想在同一台机器上运行 Web 服务器,就不要安装它。
您需要配置 MySQL 来监听外部接口(配置它监听 0.0.0.0),它默认为环回接口。不要忘记正确设置权限。
如果有必要,请在防火墙/安全组中打开数据库的 TCP 端口(本例中为 3306),这样就大功告成了。理想情况下,只允许您的 Web 服务器连接到它。
答案3
如果将MySQL开放到外网,需要非常小心安全性:
- 确保对该服务器的访问受到限制,例如它位于公共互联网的防火墙后面
- 如果必须在公共互联网上,请配置 TLS 证书并在连接时使用 TLS 加密
- 确保所有用户帐户都具有正确的凭据