des*_*tan 6 configuration web-server apache-2.2
我已经向 stackoverflow提出了同样的问题,但后来我认为它可能与此处更相关。
在 apache 的 httpd.confVirtualHost标签之间,我把<LimitExcept>表达式如下:
<VirtualHost *:80>
ServerName geopreprod.xxx.com.tr
<LimitExcept HEAD POST GET>
Deny from all
</LimitExcept>
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://XXXXXXXX...
ProxyPassReverse / http://XXXXXXXX....
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
然后 apache Web 服务器无法通过给出以下错误启动:
Syntax error on line 513 of XXXXX/httpd.conf:
deny not allowed here
Run Code Online (Sandbox Code Playgroud)
虽然它说<LimitExcept>可以VirtualHost在官方文档的标签中使用为什么我会收到这个错误?
在 apache 文档中它说:
Context: server config, virtual host, directory, .htaccess
Run Code Online (Sandbox Code Playgroud)
Sha*_*den 14
只要您的<LimitExcept>块位于对Allow/Deny指令有效的上下文中,它就会正常工作。
如果您尝试将裸Deny规则直接放在<VirtualHost>上下文中,您会看到它以相同的方式被拒绝 -不允许在其中<VirtualHost>使用 a Deny,因此也不<LimitExcept>在它们之间添加 a 。
但是,诀窍是<LimitExcept>,以及其他一些块类型,如<IfModule>,不修改指令的上下文;您永远不会在指令文档的可接受上下文列表中看到“限制”。
只有四种上下文可以指示是否允许指令:
<Location>和<Files>类型指令)在mod_authz_host指令 ( Order, Allow, 和Deny)的情况下,它们只允许出现在目录和 htaccess 上下文中,因此当它们不在一个上下文中时,它们总是会出错。
在您的情况下,此反向代理虚拟主机没有文件系统位置,因此您需要使用一个<Location>块(这是Allow/的有效上下文,Deny因为它属于目录上下文类型):
<Location />
Order allow,deny
Allow from all
<LimitExcept HEAD POST GET>
Deny from all
</LimitExcept>
</Location>
Run Code Online (Sandbox Code Playgroud)
哦,摆脱那个<Proxy *>块,因为它没有做任何事情 -<Location>无论如何都优先于它,但它与<LimitExcept>的限制相冲突..所以这让我很紧张。
| 归档时间: |
|
| 查看次数: |
18854 次 |
| 最近记录: |