Apache 虚拟主机基本配置

问题描述 投票:0回答:1

我正在尝试将我的个人托管站点从 nginx 转换为 apache,以支持我想要托管的一些更高级的内容。

我使用 nginx 中的多个服务器指令在这台机器上托管多个站点,效果非常好。我有一个网站在端口 80 上提供服务,还有其他几个网站在端口 443 上提供服务,并具有适当的 ssl 证书等等。

我尝试寻找 apache 的基本教程,但它们似乎都非常过时,或者使用不适用的自定义发行版特定配置,我在 Arch 上托管。

我的问题归结为:

我知道主conf文件/etc/httpd/conf/httpd.conf配置用于托管单个站点的监听端口、serverroot、documentroot和目录指令。

包括 /etc/httpd/conf/extra/httpd-vhosts.conf 让我可以添加我想要的站点,例如:

<VirtualHost myhttpsite.com:80>
    ServerName myhttpsite.com
    ServerAlias *.myhttpsite.com
    DocumentRoot /www/myhttpsite.com
    <Directory /www/myhttpsite.com>
        Options ....
    </Directory>
</VirtualHost>

<VirtualHost mysecuresite.dev:443>
    ServerName mysecuresite.dev
    ServerAlias *.mysecuresite.dev
    DocumentRoot /www/mysecuresite.dev
    <Directory /www/mysecuresite.dev>
        Options ....
    </Directory>
</VirtualHost>

这些虚拟主机都将指向位于 /www/SITENAME 的子目录

我的主要问题是,在包含并正确配置虚拟主机后,如果主conf文件中有任何内容用于DocumentRoot和Directory指令怎么办?

此外,虚拟主机中的 DocumentRoot 和 Directory 是否需要重复?在什么情况下它们的值会不相同?

最后是引发这一切的问题,为什么当我尝试访问 myhttpsite.com 时,我的 apache 错误日志中会出现

AH01630: client denied by server configuration: /www/myhttpsite.com/

使用 nginx 一切正常,因此 DNS 配置正确。我关闭了 nginx,启动了 apache,似乎配置阻止了访问(我已将 /www/SITES 目录更改为 -R USER:http 并为所有人提供 rx 访问权限)

apache virtualhost
1个回答
0
投票
  1. 在初级配置中
    (httpd.conf)
    ,一般不需要指定 每个虚拟主机的
    DocumentRoot
    Directory
    。这些应该设置在 虚拟主机配置。
  2. 预计虚拟主机中会出现
  3. DocumentRoot
     
    and Director
    y 的重复。它
    允许不同站点进行不同设置。
  4. 要解决您的错误,请确保 Apache 的用户具有正确的读取和执行权限 使用如下所示的目录权限:
sudo chown -R USER:http /www/SITES sudo chmod -R u+rx /www/SITES

    检查目录中是否存在任何限制性
  1. .htaccess
     文件。
  2. 验证正确的用户和组所有权是否与 Apache 的配置匹配,然后 查看虚拟主机配置中的
  3. <Directory>
     设置以获得正确的选项。

注意:命令可能需要根据您的设置和 Apache 进行调整 配置。

#阿帕奇时代

© www.soinside.com 2019 - 2024. All rights reserved.