Nginx est un serveur Web léger et efficace qui est de plus en plus utilisé dans la création d'applications Web modernes. Sa fonction de proxy inverse permet à Nginx d'être utilisé pour l'équilibrage de charge, la mise en cache, la passerelle API open source et à d'autres fins. Cet article se concentrera sur la configuration de l'ACL (liste de contrôle d'accès) basée sur la méthode de requête et l'en-tête de la requête.
ACL est un mécanisme utilisé pour contrôler l'accès et est largement utilisé dans Nginx. Grâce à l'ACL, Nginx peut filtrer et vérifier les requêtes, puis les distribuer au serveur cible. Le mécanisme ACL se compose principalement de trois parties : les variables, les opérateurs et les valeurs.
Les variables sont des informations contenues dans la requête, telles que les en-têtes de requête, les méthodes de requête, les paramètres de requête, etc. Nginx peut vérifier les valeurs de ces variables pour déterminer s'il faut envoyer la requête au serveur. La valeur fait référence aux données auxquelles la variable est comparée. Les opérateurs précisent comment les variables et les valeurs sont comparées.
Nginx prend en charge la configuration ACL basée sur les méthodes de requête et les en-têtes de requête. Vous souhaiterez peut-être utiliser ces configurations dans les situations suivantes :
Configuration ACL basée sur la méthode de requête
La configuration de l'ACL basée sur la méthode de requête est très simple. Vous devez utiliser la variable $request_method, définir un opérateur pour vérifier la valeur de cette variable, puis spécifier une liste de méthodes de requête autorisées. Voici un exemple :
location /api { if ($request_method !~ ^(GET|POST|PUT)$ ) { return 405; } proxy_pass http://localhost:8080; }
Cette configuration signifie que si la méthode de requête n'est pas GET, POST ou PUT, le statut HTTP 405 ("Méthode non autorisée") est renvoyé. Si des méthodes de requête autres que GET, POST ou PUT correspondent ici, Nginx ne les enverra pas au serveur proxy.
Configuration ACL basée sur les en-têtes de requête
La configuration ACL basée sur les en-têtes de requête est similaire à la configuration basée sur les méthodes de requête. Vous pouvez obtenir les informations d'en-tête dans la requête en utilisant la variable $http_ plus le nom de l'en-tête de la requête. Vous pouvez ensuite utiliser un opérateur pour vérifier la valeur de l'en-tête en utilisant une méthode similaire à l'approche basée sur les requêtes. Par exemple :
location /api { if ($http_authorization !~* "Bearer [a-zA-Z0-9]+" ) { return 401; } proxy_pass http://localhost:8080; }
Dans la configuration ci-dessus, si l'en-tête de requête Authorization ne contient pas la balise d'autorisation commençant par Bearer, le statut HTTP 401 ("Non autorisé") sera renvoyé. Par conséquent, Nginx n’enverra aucune requête au serveur proxy, à l’exception de l’en-tête d’autorisation correct.
Résumé
La fonctionnalité ACL de Nginx peut être utilisée pour effectuer de nombreuses logiques liées aux requêtes. La configuration ACL basée sur la méthode de demande et l'en-tête de demande est une méthode efficace pour implémenter le contrôle d'accès dans des scénarios spécifiques. De plus, vous pouvez le combiner avec d'autres fonctionnalités de Nginx, telles que la journalisation et la limitation de débit, pour améliorer la sécurité et les performances de votre application Web.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!