Eu tenho lido bastante sobre o nginx ultimamente e encontrei 2 abordagens online. O primeiro parece funcionar no nível do contexto do servidor e o segundo é recomendado para o nível do contexto do local.
Pergunta. É apropriado usar limit_except
no nível de contexto do servidor?
Variável incorporada da abordagem nº 1 ($request_method)
# server context
#
# Disable unwanted HTTP methods
# Most of the time, you need just GET, HEAD & POST HTTP request in your web application.
# Allowing TRACE or DELETE is risky as it can allow Cross-Site Tracking attack and potentially
# allow an attacker to steal the cookie information.
# So we return a 405 Not Allowed if someone is trying to use TRACE, DELETE, PUT, OPTIONS.
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 405;
}
Método de abordagem #2 ( limit_except )
# Limits allowed HTTP methods inside a location.
. . .
location /restricted-write {
# location context
limit_except GET HEAD {
# limit_except context
allow 192.168.1.1/24;
deny all;
}
}
Não, você não pode usar
limit_except
noserver
nível de contexto. É válido apenas dentro de umlocation
contexto, de acordo com a documentação do ngx_http_core_module :A abordagem nº 1 é a solução/alternativa para funcionalidade semelhante, com a ressalva de que seu exemplo fornecerá uma resposta de status HTTP 405, em vez do status 403
limit_except
com o qual responderá.A abordagem nº 2 pode ser encurtada para
HEAD
será permitido de acordo com http://nginx.org/en/docs/http/ngx_http_core_module.html#limit_except