如何使用 Apache Web 服务器配置多个站点
创始人
2024-03-02 00:43:56
0

如何在流行而强大的 Apache Web 服务器上托管两个或多个站点。

在我的上一篇文章中,我解释了如何为单个站点配置 Apache Web 服务器,事实证明这很容易。在这篇文章中,我将向你展示如何使用单个 Apache 实例来服务多个站点。

注意:我写这篇文章的环境是 Fedora 27 虚拟机,配置了 Apache 2.4.29。如果你用另一个发行版或不同的 Fedora 版本,那么你使用的命令以及配置文件的位置和内容可能会有所不同。

正如我之前的文章中提到的,Apache 的所有配置文件都位于 /etc/httpd/conf/etc/httpd/conf.d。默认情况下,站点的数据位于 /var/www 中。对于多个站点,你需要提供多个位置,每个位置对应托管的站点。

基于名称的虚拟主机

使用基于名称的虚拟主机,你可以为多个站点使用一个 IP 地址。现代 Web 服务器,包括 Apache,使用指定 URL 的 hostname 部分来确定哪个虚拟 Web 主机响应页面请求。这仅仅需要比一个站点更多的配置。

即使你只从单个站点开始,我也建议你将其设置为虚拟主机,这样可以在以后更轻松地添加更多站点。在本文中,我将从上一篇文章中我们停止的地方开始,因此你需要设置原来的站点,即基于名称的虚拟站点。

准备原来的站点

在设置第二个站点之前,你需要为现有网站提供基于名称的虚拟主机。如果你现在没有站点,请返回并立即创建一个

一旦你有了站点,将以下内容添加到 /etc/httpd/conf/httpd.conf 配置文件的底部(添加此内容是你需要对 httpd.conf 文件进行的唯一更改):


    DocumentRoot /var/www/html
    ServerName www.site1.org

这将是第一个虚拟主机配置节,它应该保持为第一个,以使其成为默认定义。这意味着通过 IP 地址或解析为此 IP 地址但没有特定命名主机配置节的其它名称对服务器的 HTTP 访问将定向到此虚拟主机。所有其它虚拟主机配置节都应跟在此节之后。

你还需要使用 /etc/hosts 中的条目设置你的网站以提供名称解析。上次,我们只使用了 localhost 的 IP 地址。通常,这可以使用你使用的任何名称服务来完成,例如 Google 或 Godaddy。对于你的测试网站,通过在 /etc/hosts 中的 localhost 行添加一个新名称来完成此操作。添加两个网站的条目,方便你以后不需再次编辑此文件。结果如下:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 www.site1.org www.site2.org

让我们将 /var/www/html/index.html 文件改变得更加明显一点。它应该看起来像这样(带有一些额外的文本来识别这是站点 1):

Hello World

Web site 1.

重新启动 HTTPD 服务器,已启用对 httpd 配置的更改。然后,你可以从命令行使用 Lynx 文本模式查看网站。

[root@testvm1 ~]# systemctl restart httpd
[root@testvm1 ~]# lynx www.site1.org

                                              Hello World 
  Web site 1.

Commands: Use arrow keys to move, '?' for help, 'q' to quit, '<-' to go back.
Arrow keys: Up and Down to move.  Right to follow a link; Left to go back.
H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list

你可以看到原始网站的修改内容,没有明显的错误,先按下 Q 键,然后按 Y 退出 Lynx Web 浏览器。

配置第二个站点

现在你已经准备好建立第二个网站。使用以下命令创建新的网站目录结构:

[root@testvm1 html]# mkdir -p /var/www/html2

注意,第二个站点只是第二个 html 目录,与第一个站点位于同一 /var/www 目录下。

现在创建一个新的索引文件 /var/www/html2/index.html,其中包含以下内容(此索引文件稍有不同,以区别于原来的网站):

Hello World -- Again

Web site 2.

httpd.conf 中为第二个站点创建一个新的配置节,并将其放在上一个虚拟主机配置节下面(这两个应该看起来非常相似)。此节告诉 Web 服务器在哪里可以找到第二个站点的 HTML 文件。


    DocumentRoot /var/www/html2
    ServerName www.site2.org

重启 HTTPD,并使用 Lynx 来查看结果。

[root@testvm1 httpd]# systemctl restart httpd
[root@testvm1 httpd]# lynx www.site2.org

                                    Hello World -- Again

   Web site 2.


Commands: Use arrow keys to move, '?' for help, 'q' to quit, '<-' to go back.
Arrow keys: Up and Down to move.  Right to follow a link; Left to go back.
H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list

在这里,我压缩了输出结果以适应这个空间。页面的差异表明这是第二个站点。要同时显示两个站点,请打开另一个终端会话并使用 Lynx Web 浏览器查看另一个站点。

其他考虑

这个简单的例子展示了如何使用 Apache HTTPD 服务器的单个实例来服务于两个站点。当考虑其他因素时,配置虚拟主机会变得有点复杂。

例如,你可能希望为这些网站中的一个或全部使用一些 CGI 脚本。为此,你可能为 CGI 程序在 /var/www 目录下创建一些目录:/var/www/cgi-bin/var/www/cgi-bin2,以与 HTML 目录命名一致。然后,你需要将配置指令添加到虚拟主机节,以指定 CGI 脚本的目录位置。每个站点可以有下载文件的目录。这还需要相应虚拟主机节中的条目。

Apache 网站描述了管理多个站点的其他方法,以及从性能调优到安全性的配置选项。

Apache 是一个强大的 Web 服务器,可以用来管理从简单到高度复杂的网站。尽管其总体市场份额在缩小,但它仍然是互联网上最常用的 HTTPD 服务器。


via: https://opensource.com/article/18/3/configuring-multiple-web-sites-apache

作者:David Both 译者:MjSeven 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

性能超DeepSeek-V...
智东西 作者 | 李水青 编辑 | 心缘 智东西10月27日报道,...
2025-10-27 16:14:31
美团发布开源LongCat...
IT之家 10 月 27 日消息,今天上午,美团 LongCat ...
2025-10-27 11:44:43
这个开源库凝聚了一名资深G...
你是否曾被 Go 项目中复杂的 Goroutine 生命周期管理搞...
2025-10-26 08:16:30
被AI引用才是真的流量:写...
如今用户越来越多直接向生成式AI问问题——答案里出现你的品牌或文章...
2025-10-22 14:44:07
边打字边出片,交互式生成长...
新智元报道 编辑:LRST 【新智元导读】AI拍长视频不再是难事...
2025-10-18 09:44:44
人类皮肤细胞变身AI处理器...
利用人类皮肤细胞也能造出 AI 处理器?一家名为 FinalSpa...
2025-10-15 22:19:45

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
从 Yum 更新中排除特定/某... 作为系统更新的一部分,你也许需要在基于 Red Hat 系统中由于应用依赖排除一些软件包。如果是,如...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
如何检查你的 Linux 系统... 不知道在使用哪个初始化系统?以下是方法。每个主流 Linux 发行版(包括 Ubuntu、Fedor...
如何理解Apache 2.0许... 提要:Apache 2.0许可证中的专利许可条款使得开源代码可以安全使用,但它经常被误解。Apach...