Я использую apache как обратный прокси для сервера приложений ruby on rails. Когда HTTP-запрос получен нестандартным HTTP-методом, это вызывает ошибку на сервере приложений, которая раскрывает некоторые (второстепенные) сведения о среде. Могу ли я запретить apache пересылать запросы, если метод HTTP не соответствует одному из безопасных стандартных методов?
[РЕДАКТИРОВАТЬ]
Используя ответ Шейна в качестве руководства, я придумал следующее, разместив здесь для справки.
RewriteCond %{REQUEST_METHOD} !^(GET|HEAD|POST|OPTIONS)
RewriteRule .* - [R=405,L]
Я обнаружил, что отменить проверку проще, позволяет apache возвращать правильный код ответа (405 - метод не разрешен) и означает, что все настройки прокси-сервера не изменены (т.е. вы можете использовать ProxyPass или ProxyPassMatch)
Должен быть в состоянии выполнить это с помощью <Limit>
:
<Limit GET HEAD POST>
ProxyPass / http://example.com/
</Limit>
Редактировать:
Придирчивые директивы ... мы будем придерживаться плана Б.
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>