Evitar que o Apache faça proxy reverso de certos métodos HTTP

4

Estou usando o apache como um proxy reverso para um servidor de aplicativos Ruby on Rails. Quando uma solicitação HTTP é recebida com um método HTTP não padrão, isso causa um erro no servidor de aplicativos que expõe alguns detalhes (menores) sobre o ambiente. Posso evitar que o apache encaminhe solicitações, a menos que o método HTTP corresponda a um dos métodos padrão e seguros?

[EDITAR]

Usando a resposta de Shane como guia, eu apresentei o seguinte, colocando aqui como referência.

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

Descobri que a negação da verificação é mais fácil, permite que o apache retorne o código de resposta correto (405 método não é permitido) e significa que todas as configurações de proxy não foram alteradas (por exemplo, ProxyPass ou ProxyPassMatch)

    
por Slicedpan 16.01.2014 / 16:51

2 respostas

4

Deve conseguir fazer isso com <Limit> :

<Limit GET HEAD POST>
  ProxyPass / http://example.com/
</Limit>

Editar:

Diretivas Picky .. nós vamos com o plano B.

RewriteCond %{REQUEST_METHOD} ^(GET|HEAD|POST)$
RewriteRule ^/(.*)$ http://example.com/$1 [P,L]
    
por 16.01.2014 / 16:55
0

Se o proxy reverso do Apache for usado, todos os métodos HTTP poderão ser permitidos usando a diretiva:

<VirtualHost *:80>
    ServerName ....com

    <Proxy "*">
     Order deny,allow
     Allow from all
     AllowMethods GET PUT DELETE POST
    </Proxy>

    ProxyPass    ...
</VirtualHost>
    
por 22.09.2017 / 11:04