如何在Apache服务器上正确使用域名托管网页?

How to properly use a domain name on an Apache server to host a webpage?

好的,我是 运行 Arch Linux 操作系统上的 Apache Server 2.4.20。我目前已设置并以这样的方式工作,即来自任何外部连接的请求都通过我的 public 静态 ip 转发到连接到服务器的本地 ip。除了在我的路由器上设置端口转发并将 /etc/http/conf/httpd.conf 设置为 Listen 80 之外,我不需要配置任何其他东西来获取服务器 运行。嗯,看起来很简单。

现在我想继续流程的下一步并托管我通过 Apache 服务器购买的域名。基本上,到目前为止,当您连接到我的服务器时,它只会在地址栏中显示我的 public 静态 IP。我想以域名显示在地址栏中而不是我服务器的 IP 的方式进行设置。

截至目前,我已经尝试了三天以找到执行此操作的正确方法,似乎在任何地方都没有一个指南可以逐步解释这一点。我对此进行了大约 40 小时的研究。我收集的点点滴滴是

我已经尝试了所有可能的虚拟主机组合组合,并试图配置我的名称服务器,但它无法正常工作,我浪费了大量时间。有人可以写一篇关于在 Apache 服务器上设置域名的从头到尾的简短指南吗?我不需要对所做的事情进行特别深入的解释,我了解每个过程我只是不了解设置它的过程。

所以,如果有人能提出一个简单的例子来展示从开始到结束的过程,我会很高兴,再次解释你在每一步所做的事情应该保持在最低限度,因为任何人都经历过这个他们应该在这一点上完成研究。

示例:

我现在拥有的:

Apache Server IP: **234.34.23.2**

有人输入此内容,他们就会收到您的 index.html 页面,并且此 IP 会显示在地址栏中。

我也想得到什么:

Purchased Domain Name: www.example.com

现在,当有人在地址栏中键入此内容时,他们会得到相同的 index.html 页面,并且此域名仍保留在地址栏中。

注意:我只是尝试对单个域执行此操作,因此我不需要涉及多个虚拟主机的示例。

您的研究 was/is 准确。您所要做的就是:

  • httpd.conf 文件中使用虚拟主机
  • 更改名称服务器以将您的域指向您的服务器

DNS/NameServer配置

在您的 DNS 设置中,将 AAAAA(如果您有 IPV6 值)设置为指向您的 IP:

Host: @
Value: 234.34.23.2
TTL: 3600 (seconds)

保存以上内容并刷新您机器的 DNS 缓存。现在,去 www.example.com 应该尝试打开 234.34.23.2。如果没有,您可以通过以下方式将 wwwCNAME 值设置为与您的 A 值相同:

Host: www
CNAME: @
TTL: 3600 (seconds)

再次,重新加载您的 DNS 缓存并尝试。

虚拟主机

要设置 Apache 以便它知道要为 www.example.com 域提供哪些文件,请在您的 httpd.conf 文件中添加以下部分:

Listen 80
<VirtualHost *:80>
    DocumentRoot "/www/example"
    ServerName www.example.com
    ServerAlias example.com
    <Directory "/www/example">
        AllowOverride All
        Options All
        Require all granted
        # Any other directives
    </Directory>
    # Other directives here
</VirtualHost>

重新加载 Apache 服务器(或重新启动)。就是这样。