防止 Apache 反向代理某些 HTTP 方法

Sli*_*pan 5 reverse-proxy apache-2.2

我使用 apache 作为 ruby​​ on rails 应用程序服务器的反向代理。当使用非标准 HTTP 方法接收 HTTP 请求时,这会导致应用服务器中出现错误,从而暴露有关环境的一些(次要)详细信息。除非 HTTP 方法与安全的标准方法之一匹配,否则我可以阻止 apache 转发请求吗?

[编辑]

使用 Shane 的回答作为指导,我想出了以下内容,在此发布以供参考。

RewriteCond %{REQUEST_METHOD} !^(GET|HEAD|POST|OPTIONS)
RewriteRule .* - [R=405,L]
Run Code Online (Sandbox Code Playgroud)

我发现否定检查更容易,允许 apache 返回正确的响应代码(405 是不允许的方法),并且意味着所有代理配置内容都没有改变(即您可以使用 ProxyPass 或 ProxyPassMatch)

Sha*_*den 5

应该能够通过以下方式完成此操作<Limit>

<Limit GET HEAD POST>
  ProxyPass / http://example.com/
</Limit>
Run Code Online (Sandbox Code Playgroud)

编辑:

挑剔的指令……我们将采用计划 B。

RewriteCond %{REQUEST_METHOD} ^(GET|HEAD|POST)$
RewriteRule ^/(.*)$ http://example.com/$1 [P,L]
Run Code Online (Sandbox Code Playgroud)

  • ProxyPass 不能出现在 &lt;Limit&gt; 或 &lt;LimitExcept&gt; 内 (2认同)