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 :
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!