我使用apache作为Rails应用程序服务器上的ruby的反向代理。 当使用非标准HTTP方法接收到HTTP请求时,会在应用程序服务器中导致出现一些有关环境的细节的错误。 我可以防止Apache转发请求,除非HTTP方法匹配的安全,标准的方法之一?
[编辑]
以Shane的回答为指导,我提出了以下内容,以供参考。
RewriteCond %{REQUEST_METHOD} !^(GET|HEAD|POST|OPTIONS) RewriteRule .* - [R=405,L]
我发现否定检查更容易,允许apache返回正确的响应代码(405是方法不允许),并且意味着所有的代理configuration的东西是不变的(即你可以使用ProxyPass或ProxyPassMatch)
应该可以用<Limit>来完成:
<Limit GET HEAD POST> ProxyPass / http://example.com/ </Limit>
编辑:
挑剔的指示..我们会去计划B.
RewriteCond %{REQUEST_METHOD} ^(GET|HEAD|POST)$ RewriteRule ^/(.*)$ http://example.com/$1 [P,L]
如果使用Apache反向代理,则可以通过使用伪指令来允许所有HTTP方法:
<VirtualHost *:80> ServerName ....com <Proxy "*"> Order deny,allow Allow from all AllowMethods GET PUT DELETE POST </Proxy> ProxyPass ... </VirtualHost>