Maison  >  Article  >  Opération et maintenance  >  Configuration ACL basée sur l'identification du périphérique dans le proxy inverse Nginx

Configuration ACL basée sur l'identification du périphérique dans le proxy inverse Nginx

王林
王林original
2023-06-10 12:09:111292parcourir

Nginx est un serveur Web hautes performances, souvent utilisé pour le proxy inverse ou l'équilibrage de charge. Dans un scénario de proxy inverse, Nginx peut nous aider à transférer uniformément les demandes de plusieurs serveurs, améliorant ainsi la vitesse et la stabilité d'accès au site Web. Cependant, dans certains scénarios particuliers, nous pouvons être amenés à transférer ou traiter les demandes différemment en fonction de l'appareil de l'utilisateur. Par exemple, pour les demandes relatives aux appareils mobiles, nous devrons peut-être les transférer vers un serveur mobile spécialement optimisé pour obtenir une meilleure expérience d'accès aux pages. À l’heure actuelle, la configuration ACL basée sur l’identification du périphérique est très utile. Voici quelques étapes de base et un exemple de code pour vous aider à utiliser les ACL sensibles aux appareils avec Nginx.

Première étape : Installez le plug-in d'identification de l'appareil

Étant donné que Nginx ne prend pas en charge l'identification de l'appareil par défaut, nous devons d'abord installer les plug-ins appropriés. Les plug-ins les plus couramment utilisés à l'heure actuelle sont ngx_http_browser_module et ngx_http_user_agent_module. Ils peuvent tous deux identifier les informations courantes sur l'agent utilisateur et fournir les variables correspondantes que nous pouvons utiliser. L'exemple de code donné ci-dessous est implémenté sur la base de ngx_http_user_agent_module.

Tout d'abord, nous devons ajouter ce module lors de la compilation de Nginx. Ceci peut être réalisé en ajoutant l'option --with-http_user_agent_module à la commande configure :

./configure --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 - - with-pcre --with-http_realip_module --with-http_geoip_module --with-http_user_agent_module

Étape 2 : Configurer le jugement d'identification de périphérique

Dans Nginx, le jugement d'identification de périphérique peut être Ceci est réalisé grâce aux instructions if et aux variables $ua. Plus précisément, nous pouvons utiliser les instructions if pour déterminer le type de périphérique en fonction de la valeur de la variable $ua et effectuer différentes opérations dans les branches correspondantes. Voici un exemple simple :

map $http_user_agent $is_mobile {

default        0;
~*mobile|android|ipod|iphone|blackberry|phone|playbook|tablet|kindle|silk     1;

}

server {

listen 80;
server_name example.com;

if ($is_mobile) {
    # 处理移动设备的请求
    proxy_pass http://mobile.example.com;
} else {
    # 处理桌面设备的请求
    proxy_pass http://www.example.com;
}

}

Dans l'exemple ci-dessus, nous définissons d'abord une variable $is_mobile, dont la valeur change en fonction de la valeur de la variable $http_user_agent. Plus précisément, si la valeur de $http_user_agent contient des mots-clés tels que mobile, Android, iPod, iPhone, Blackberry, Phone, Playbook, Tablet, Kindle ou Silk, la valeur de $is_mobile est 1 ; sinon, elle est 0. Ensuite, utilisez l'instruction if dans le fichier de configuration Nginx pour déterminer le type de périphérique en fonction de la valeur de la variable $is_mobile et transférez la demande à un autre serveur.

Il convient de noter que l'instruction if elle-même affectera les performances de Nginx, nous devons donc éviter autant que possible d'utiliser les instructions if à des endroits inutiles. De plus, nous pouvons également utiliser le module ngx_http_map_module pour implémenter le mappage des types de périphériques et les adresses de transfert afin de simplifier davantage la configuration.

Étape 3 : Tester et optimiser la configuration

La configuration ACL pour la reconnaissance des appareils est généralement complexe et doit prendre en compte différents types d'appareils et versions de navigateur. Afin de garantir l'exactitude et la fiabilité de la configuration, nous devons effectuer suffisamment de tests et d'optimisation. Voici quelques suggestions :

  1. Comprenez l'accès des utilisateurs grâce aux journaux d'accès et à la surveillance du trafic, et optimisez le taux de réussite de l'identification des appareils en fonction de l'analyse des données.
  2. Différents types d'appareils et versions de navigateurs, en particulier les navigateurs sur appareils mobiles, nécessitent un traitement et une optimisation différents. Par exemple, vous pouvez utiliser des pages compatibles gzip pour les requêtes provenant d'appareils mobiles, économisant ainsi de la bande passante et augmentant les vitesses de chargement des pages.
  3. Étant donné que les instructions if affecteront les performances de Nginx, nous pouvons envisager de prétraiter certaines informations courantes de l'agent utilisateur et de les mettre en cache dans des variables pour éviter les calculs et les jugements répétés. Ceci peut être réalisé via les modules ngx_http_map_module et ngx_http_upstream_hash_module.

Summary

Avec la configuration ACL basée sur la reconnaissance des appareils, nous pouvons mieux gérer les demandes des appareils mobiles et des appareils de bureau dans Nginx, améliorant ainsi l'expérience utilisateur et les performances du site Web. . Il convient de noter qu'en raison de la diversité et de la complexité des types d'appareils et des versions de navigateur, nous devons effectuer suffisamment de tests et d'optimisation pour garantir l'exactitude et la fiabilité de la configuration. De plus, nous devons éviter autant que possible d'utiliser les instructions if à des endroits inutiles pour améliorer les performances et la stabilité de Nginx.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn