我需要 ports.conf Apache 配置吗?

我需要 ports.conf Apache 配置吗?

我使用 nginx 提供静态内容,并将请求代理到 Apache 以提供 Django。我有多个域,每个域都有自己的端口和 ApacheVirtualHost配置。例如,domain1.com 的 proxy_pass 为 127.0.0.1:8000,domain2.com 的 proxy_pass 为 127.0.0.2:8010,等等。

我从 中删除了NameVirtualHost和。我为什么需要它们?似乎每个域的 都可以解决问题。Listenports.confListenVirtualHost

答案1

现在您已在 VirtualHost 配置中定义了它们,因此不再需要它们。如果配置中未定义,服务器将始终默认使用标准端口,因此您不必担心以后删除 VHost。

答案2

每个条件都需要一个NameVirtualHost,它告诉 Apache 如何对传入的请求进行分类。如果您希望在端口 80 上基于名称的虚拟托管,则只需要

NameVirtualHost *:80

任何连接到端口 80 的 HTTP 客户端都将根据'Name:'HTTP 标头进行分类,匹配节点中的 ServerName 或 ServerAlias <VirtualHost *:80>(如果未找到匹配项,则匹配相同标准的第一个定义的 vhost)。

大多数情况下,您只需要两个基于名称的虚拟主机规则:端口 80 开启,端口 443 开启(后者只有在使用 SNI/服务器名称指示时才真正有意义)。这通常以自动方式完成,如果激活了 mod_ssl,则端口 443 和 *:433 基于名称的虚拟主机也会激活:

NameVirtualHost *:80
Listen 80
<IfModule mod_ssl.c>
    NameVirtualHost *:443
    Listen 443
</IfModule>

就您而言,您似乎依赖于通常的基于 IP/端口的虚拟托管。在这种情况下,每个应用程序都需要相同的代码:

Listen 800x
<VirtualHost *:800x>
    ServerName app1
    [...]
</VirtualHost>

NameVirtualHost不需要因为每个端口只有一个虚拟主机。

服务器名称
也大多不相关,它将被 Apache 在错误中用来引用 vhost。

相关内容