如何为 AWS EC2 Ubuntu 实例设置子域?

Chu*_*ung 4 domain-name-system subdomain linux-networking amazon-web-services

我正在尝试为我的AWS EC2 ubuntu 实例设置子域,但没有足够的知识我无法继续。

  1. 我在域名服务提供商上有一个停放的域名example.com
  2. 我的 EC2 实例关联了弹性 IP,比如10.10.10.10
  3. 我在域名服务提供商的网站上创建了两个 A 记录。

    www.example.com 指向10.10.10.10

    example.com 指向10.10.10.10

  4. 一切都像魅力一样工作,我可以使用域名访问我的实例。

但现在我想有子域个人网站/服务的情况下,说webmail.example.comdatabase.example.com

我尝试为子域设置虚拟主机文件,但是当我访问这些子域时它不起作用,chrome 说“糟糕!谷歌浏览器找不到 subdoamin.example.com

问:我的问题是,如何为我的服务器设置子域?

提前致谢。

use*_*517 7

到目前为止,最简单的方法是为 example.com创建通配符 DNS 记录。例如

*.example.com. 14400 A 10.10.10.10
Run Code Online (Sandbox Code Playgroud)

或 CNAME

*.example.com CNAME example.com.
Run Code Online (Sandbox Code Playgroud)

请记住,Apache 将提供第一个 vhost 的内容,其ServerNameServeralias与http 请求中的Host: 标头匹配。如果这些都不匹配,那么定义的第一个 vhost 的内容将被提供,因为它被认为是默认的 vhost。

要让 apache 访问服务器内容,最简单的方法是使用NameBasedVirtual托管。

如果您想为每个虚拟主机提供相同的内容,那么只需定义一个

NameVirtualHost *:80
<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/html
    ...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

如果你想从 sub1.example.com 和 sub2.example.com 提供不同(但相同)的内容,那么你可以做一些事情

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName sub1.example.com
    ServerAlias sub2.example.com
    DocumentRoot /var/www/sub1sub2
    ...
</VirtualHost>

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/html
    ...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

等等。

如果您要设置和配置许多虚拟主机,您可能需要查看 Apache 的动态配置的海量托管文档。