Tous les produits
Search
Centre de documentation

API Gateway:Geo-IP

Dernière mise à jour :Sep 19, 2026

Le plug-in geo-ip détermine la localisation géographique des utilisateurs à partir de leurs adresses IP et transmet ces données aux plug-ins suivants via des attributs ou des en-têtes de requête.

Attributs d'exécution

Étape d'exécution du plug-in : Authorization. Priorité d'exécution du plug-in : 440.

Champs

Champ

Type de données

Obligatoire

Valeur par défaut

Description

ip_protocol

string

Non

ipv4

Protocole IP à utiliser. Valeurs autorisées : ipv4 et ipv6. Si vous spécifiez ipv4, le système collecte et transmet uniquement les informations géographiques des utilisateurs IPv4 aux plug-ins suivants. Les requêtes des utilisateurs IPv6 contournent le plug-in. La prise en charge d'ipv6 est en cours de développement. Une fois activée, si vous spécifiez ipv6, le système collecte et transmet uniquement les informations géographiques des utilisateurs IPv6. Les requêtes des utilisateurs IPv4 contournent alors le plug-in.

ip_source_type

string

Non

origin-source

Type de source. Valeurs autorisées : origin-source et header. La valeur origin-source correspond à l'adresse IP du socket pair.

ip_header_name

string

Non

x-forwarded-for

En-tête depuis lequel extraire l'adresse IP. Ce champ s'applique lorsque ip_source_type est défini sur header.

Exemples de configuration

ip_protocol: ipv4
ip_source_type: header
ip_header_name: X-Real-Ip

Générer geoCidr.txt

Le fichier ip.merge.txt, situé dans le répertoire generateCidr, contient tous les blocs CIDR mondiaux issus du projet ip2region sur GitHub. Le script ipRange2Cidr.go convertit les plages IP en blocs CIDR. Les blocs CIDR convertis et les informations géographiques associées sont stockés dans le fichier /data/geoCidr.txt. Au démarrage de Higress, le plug-in geo-ip lit ce fichier et l'analyse pour construire une structure de données arborescente (radix tree) en mémoire. Cette approche permet une recherche rapide des informations géographiques liées aux adresses IP des utilisateurs. Exécutez la commande suivante pour lancer ipRange2Cidr.go :

go run generateCidr/ipRange2Cidr.go

Utilisation des propriétés

Le plug-in geo-ip utilise proxywasm.SetProperty() pour définir le pays, la ville, la province et le FAI (isp) comme propriétés de la requête. Les plug-ins suivants peuvent alors appeler proxywasm.GetProperty() pour récupérer les informations géographiques liées aux adresses IP des utilisateurs.

Intégrer la localisation géographique des utilisateurs en combinant le plug-in AI prompt decorator et le plug-in geo-ip

Pour ajouter la localisation géographique des utilisateurs au début ou à la fin des requêtes LLM, activez à la fois le plug-in geo-ip et le plug-in AI prompt decorator. Assurez-vous que le plug-in geo-ip possède une priorité supérieure à celle du plug-in AI prompt decorator au sein de la même étape de traitement. Le plug-in geo-ip calcule la localisation géographique de l'utilisateur sur la base de son adresse IP et transmet cette information aux plug-ins suivants via un attribut de requête. Par exemple, dans la phase par défaut, la priorité du plug-in geo-ip est de 1000, tandis que celle du plug-in ai-prompt-decorator est de 500.

Exemple de configuration du plug-in geo-ip :

ipProtocal: "ipv4"

Exemple de configuration du plug-in ai-prompt-decorator :

prepend:
- role: system
  content: "The current geographic location of the user is: country:${geo-country}, province:${geo-province}, city:${geo-city}"
append:
- role: user
  content: "Each time you answer a question, try to ask a rhetorical question."

Utilisez les configurations précédentes pour initier une requête :

curl http://localhost/test \
-H "content-type: application/json" \
-H "x-forwarded-for: 87.254.207.100,4.5.6.7" \
-d '{
  "model": "gpt-3.5-turbo",
  "messages": [
    {
      "role": "user",
      "content": "What is the weather like today?"
    }
  ]
}'

Exemple de requête traitée :

curl http://localhost/test \
-H "content-type: application/json" \
-H "x-forwarded-for: 87.254.207.100,4.5.6.7" \
-d '{
  "model": "gpt-3.5-turbo",
  "messages": [
    {
      "role": "system",
      content: "The current geographic location of the user is: country: China, province: Beijing, city: Beijing"
    },
    {
      "role": "user",
      "content": "What is the weather like today?"
    },
    {
      "role": "user",
      content: "Each time you answer a question, try to ask a rhetorical question."
    }
  ]
}'