我正在尝试将我的个人托管站点从 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 访问权限)
(httpd.conf)
,一般不需要指定
每个虚拟主机的 DocumentRoot
和 Directory
。这些应该设置在
虚拟主机配置。DocumentRoot
and Director
y 的重复。它 允许不同站点进行不同设置。
sudo chown -R USER:http /www/SITES
sudo chmod -R u+rx /www/SITES
.htaccess
文件。
<Directory>
设置以获得正确的选项。
注意:命令可能需要根据您的设置和 Apache 进行调整 配置。
#阿帕奇时代