/www 之外的命名虚拟主机上的 Wampserver 403
Posted
技术标签:
【中文标题】/www 之外的命名虚拟主机上的 Wampserver 403【英文标题】:Wampserver 403 on named virtual hosts outside of /www 【发布时间】:2012-06-07 05:24:50 【问题描述】:当我尝试在 c:/wamp/www/ 目录之外创建虚拟主机时,Wampserver 告诉我访问被拒绝。我可以在那个目录中做一个很好的。即使对文件夹进行符号链接也可以,但我宁愿不必使用符号链接。为什么它不起作用?
这是我在 httpd.conf 末尾使用的代码
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot "c:/wamp/www"
ServerName localhost
ServerAlias localhost
</VirtualHost>
<VirtualHost *:80>
ServerName local.cascade
DocumentRoot c:/wamp/www/cascade/
</VirtualHost>
<VirtualHost *:80>
ServerName local.md9
ServerAlias local.md9
DocumentRoot "m:/Work/New MD9.ca/site/"
</VirtualHost>
<Directory "m:/Work/New MD9.ca/site/">
Order Allow,Deny
Allow from All
</Directory>
“级联”vh 工作正常。
【问题讨论】:
您的文件系统权限是否允许访问? 当然,为什么不呢?什么需要许可? 默认情况下,并非所有系统都允许 Web 服务器用户帐户访问所有内容。 什么是网络服务器用户帐户以及如何允许它访问? 我看到用户和组在 httpd.conf 中设置为“守护进程”,但在任务管理器中显示 httpd.exe 正在以 SYSTEM 身份运行。不过这并不重要。 【参考方案1】:我想我应该更仔细地查看 http.conf。没那么长,主要是cmets。麻烦的是这个。
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other
# <Directory> blocks below.
#
<Directory />
AllowOverride none
Require all denied
</Directory>
我把它注释掉了,现在一切正常,虽然我猜它不太安全,但它只是一个测试服务器。
我认为 <Directory "m:/Work/New MD9.ca/site/">
位应该可以处理它,但我想不是。
【讨论】:
很好的解决方案!我也在这里找到了这个http://reanweb.com/wordpress/step-step-guide-create-virtual-hosts-using-wamp/
。万一有人试图找到整个过程
@Moss,尽管您并不担心安全性,因为它是一个测试服务器,但我会向其他人提一下,您可以不注释该目录标签,以及另一个带有您的虚拟主机路径的目录标签web 文件夹,但使用“AllowOverride all”而不是“AllowOverride none”,这样既安全又可用。【参考方案2】:
我知道这个问题现在已经过时了,而且你已经解决了,但我遇到了这个问题并在没有删除 Require all denied
标记的情况下解决了它。
您只需将Require local
(或Require all
用于在线访问)标签添加到目录标签。例如
<VirtualHost *:80>
ServerName local.md9
ServerAlias local.md9
DocumentRoot "m:/Work/New MD9.ca/site/"
<Directory "m:/Work/New MD9.ca/site/">
Order Allow,Deny
Allow from All
Require local
</Directory>
</VirtualHost>
您可以在 httpd.conf 中看到 DocumentRoot 目录中声明的相同规则
【讨论】:
【参考方案3】:我遇到了同样的问题,但在查看了这个问题后设法解决了。
但是,接受的答案可能不是最佳解决方案,具体取决于您希望 Apache 配置的安全程度。
我认为解决方案应该提到两件事,第一是确保安全性不受影响,第二是;了解 Apache 版本 2.2 和 2.4 之间访问控制配置的差异。
确保安全性不受影响
注释掉建议的行:
<Directory />
AllowOverride none
Require all denied
</Directory>
意味着您删除了应用于计算机上所有目录的默认严格安全性,据我了解。其他人可以创建一个指向您的C:\very\sensitive\information
目录的配置,然后将内容从那里提供给网站(这很可能是共享主机上的一个问题)。有趣的是,该块上方有以下注释:
# First, we configure the "default" to be a very restrictive set of
# features.
然后在那个块下面:
# Note that from this point forward you must specifically allow
# particular features to be enabled - so if something's not working as
# you might expect, make sure that you have specifically enabled it
# below.
锁定所有内容,然后按目录有条件地解锁是完全有意义的。
我想出了以下内容,它指向我的所有网站(通过 Apache 虚拟主机提供)将在我的机器上存在的位置。这紧跟在<Directory "d:/wamp/www/"></Directory>
块之后。
<Directory "d:/wamp/sites/">
Options Indexes FollowSymLinks
AllowOverride all
Require all granted
</Directory>
然后在每个虚拟主机配置/别名中,您可以设置适用于该目录的配置。
访问控制配置不同
在较新版本的 Apache 中配置访问控制已更改。
过去是什么:
Order allow,deny
Allow from all
现在应该是:
Require all granted
欲了解更多信息:http://httpd.apache.org/docs/current/upgrading.html
【讨论】:
【参考方案4】:<Directory>
标签应该在<VirtualHost *:80>
内
像这样:
<VirtualHost *:80>
ServerName local.md9
ServerAlias local.md9
DocumentRoot "m:/Work/New MD9.ca/site/"
<Directory "m:/Work/New MD9.ca/site/">
Order Allow,Deny
Allow from All
</Directory>
</VirtualHost>
另请注意,对于默认 www 文件夹之外,您应该使用 require 而不是 allow
<Directory />
AllowOverride none
Require all denied
</Directory>
【讨论】:
【参考方案5】:如果您尝试了上述所有 .conf 编辑但均未成功,请尝试以下附加步骤:
1) 确保 DocumentRoot 和
2) 仔细检查
例子:
<VirtualHost *:80>
DocumentRoot "D:/vhost_directory/website_directory"
ServerName mywebsite.local
<Directory "D:/vhost_directory/website_directory">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
3) 检查配置文件语法:
cd \wamp\bin\apache\apache2.4.9\bin
httpd -t
4) 修复 conf 文件错误,直到得到输出:
Syntax OK
5) 刷新域名缓存(必须以管理员身份运行控制台):
net stop dnscache
net start dnscache
6) 重启 Apache 服务或重启 WAMP 上的所有服务
【讨论】:
以上是关于/www 之外的命名虚拟主机上的 Wampserver 403的主要内容,如果未能解决你的问题,请参考以下文章