Filtrer les méthodes HTTP avec Nginx

Pour des raisons quelconques il est parfois intéressant de filtrer les méthodes HTTP disponibles directement côté serveur.

Exemple : vous souhaitez renforcer la sécurité de votre couchdb en backend derrière votre reverse proxy nginx ou de votre super RESTful webservice …

Pour n’autoriser que les requêtes de type GET et POST sur l’url /users et retourner une erreur 444 (No Response) pour tous les autres types de requêtes (PUT, DELETE …) il suffit d’utiliser les directives suivantes :

location /users {
    if ($request_method !~ ^(GET|POST)$) {
        return 444;
    }
}

Ressources complémentaires :