Lorsque vous configurez certaines fonctionnalités CDN, comme la modification des en-têtes de réponse sortants ou des en-têtes de requête, utilisez des variables pour obtenir le contexte de la requête ou de la réponse actuelle. Les variables renvoient des valeurs telles que la méthode de requête, l'URL et l'adresse IP du client, ce qui permet un contrôle précis. Cette rubrique décrit toutes les variables prises en charge par le CDN, avec des exemples de valeurs et des notes d'utilisation pour chaque variable.
Présentation des variables
Les variables CDN sont regroupées par domaine d'application : variables du domaine d'accès, variables du domaine de récupération auprès de l'origine (origin fetch) et variables de réponse :
Variables du domaine d'accès : Variables qui s'appliquent dans le domaine d'accès, où le nœud CDN traite les requêtes clients et génère la clé de cache.
Variables du domaine de récupération auprès de l'origine : Variables qui s'appliquent lors de la récupération auprès de l'origine. Certaines fonctionnalités sont déployées sur le module du domaine de récupération auprès de l'origine. Dans ce cas, les variables du domaine d'accès ne s'appliquent pas et doivent être remplacées par des variables du domaine de récupération auprès de l'origine.
Variables de réponse : Utilisez ces variables pour obtenir les en-têtes de réponse que le serveur d'origine renvoie au nœud CDN.
Le tableau suivant répertorie les groupes de variables et les variables dans chaque domaine d'application :
|
Domaine d'application |
Groupe de variables |
Variables |
|
Le domaine d'accès |
|
|
|
Le domaine d'accès |
|
|
|
Le domaine d'accès |
|
|
|
Le domaine d'accès |
|
|
|
Le domaine d'accès |
|
|
|
Le domaine d'accès |
|
|
|
Le domaine d'accès |
|
|
|
Le domaine d'accès |
|
|
|
Le domaine d'accès |
|
|
|
Le domaine d'accès |
|
|
|
Le domaine d'accès |
|
|
|
Le domaine d'accès |
|
|
|
Le domaine de récupération auprès de l'origine |
|
|
|
Le domaine de récupération auprès de l'origine |
|
|
|
Variables de réponse |
|
Fonctionnalités prenant en charge les variables
Fonctionnalités dans le domaine d'accès
Fonctionnalités dans le domaine de récupération auprès de l'origine
Limites
Avant de référencer une variable, vérifiez les conditions et limites suivantes qui s'appliquent à l'ensemble des variables :
Les variables SSL/TLS s'appliquent uniquement aux requêtes HTTPS. Leurs valeurs sont vides lorsque ces variables sont référencées dans des requêtes HTTP.
Les variables
$ssl_client_*ont des valeurs uniquement lorsque la vérification du certificat client (authentification mutuelle, ou mTLS) est configurée. Leurs valeurs sont vides pour les requêtes HTTPS standard.La résolution GeoIP présente des limites de précision. Les champs au niveau de la ville et de longitude/latitude identifient généralement le centre-ville et ne conviennent pas aux cas d'utilisation de blocage nécessitant un géoblocage précis. Lorsqu'une adresse IP client ne peut pas être identifiée, les champs associés renvoient des valeurs par défaut (par exemple, le code pays renvoie
XXet les valeurs de code numérique renvoient0).La variable
$uripeut être modifiée par la logique interne de routage des requêtes du CDN, telle que la redirection ou la réécriture interne. L'utilisation de cette variable n'est pas recommandée. Pour obtenir un chemin inchangé, utilisez$raw_uri.
Conventions de nommage des variables d'en-tête
Lorsque le CDN traite les en-têtes de requête HTTP et les en-têtes de réponse, il les mappe automatiquement vers des variables internes. Les noms de variables doivent respecter les règles suivantes :
Préfixe fixe : Toutes les variables d'en-tête de requête doivent commencer par
$http_et toutes les variables d'en-tête de réponse doivent commencer par$sent_http_.Conversion en minuscules : Toutes les lettres majuscules d'un nom d'en-tête doivent être converties en minuscules.
Remplacement des traits d'union : Tous les traits d'union (
-) dans un nom d'en-tête doivent être remplacés par des underscores (_).
Exemples de conversion :
|
Nom d'en-tête d'origine |
Variable convertie |
|
Accept-Language |
|
|
X-Forwarded-For |
|
|
X-Customize-Header |
|
Variables dans le domaine d'accès
Méthode de requête
$request_method
Signification : La méthode de requête HTTP utilisée par la requête actuelle.
Exemples de valeurs :
GET,POST,HEAD,PUT,DELETEet autres.
Version HTTP
$server_protocol
Signification : La version du protocole HTTP utilisée par la requête actuelle.
Exemples de valeurs :
HTTP/1.1etHTTP/2.0.
URI
$uri
Signification : Le chemin d'URL de la requête actuelle, à l'exclusion des paramètres de requête.
Exemple de valeur :
/1.txt.Note : Cette valeur peut être modifiée par la logique interne de routage des requêtes du CDN, telle que la redirection ou la réécriture interne. L'utilisation de cette variable n'est pas recommandée. Pour obtenir un chemin inchangé, utilisez
$raw_uri.
$raw_uri
Signification : Le chemin d'URL de la requête d'origine, à l'exclusion des paramètres de requête. La logique interne de routage des requêtes du CDN ne modifie pas cette valeur.
Exemple de valeur :
/1.txt.
$request_uri
Signification : Le chemin d'URL complet de la requête d'origine, y compris les paramètres de requête.
Exemple de valeur :
/1.txt?chapter=1&flag=on.
Paramètres de requête
$args
Signification : La chaîne complète des paramètres de requête dans l'URL (à l'exclusion de
?).Exemple de valeur :
chapter=1&flag=on.
$arg_<parameter-name>
Signification : La valeur d'un paramètre spécifique dans les paramètres de requête de l'URL. Remplacez
<parameter-name>par le nom réel du paramètre.Exemple de valeur :
$arg_flagextrait les valeurs de l'URL/1.txt?chapter=1&flag=on. La valeur du paramètreflageston.
En-têtes de requête
$http_<request-header-name>
Signification : La valeur d'un en-tête de requête HTTP spécifique dans la requête client. Remplacez
<request-header-name>par le nom réel de l'en-tête de requête.Exemples de valeurs :
$http_user_agentreprésente la valeur de l'en-tête de requête User-Agent et$http_refererreprésente la valeur de l'en-tête de requête Referer.Note : Les noms de variables d'en-tête de requête doivent respecter les conventions de nommage des variables d'en-tête.
Nom de domaine
$host
Signification : Le nom de domaine d'origine dans la requête client, qui correspond à la valeur de l'en-tête de requête
Host: <domain-name>.Exemple de valeur :
www.example.com.
Protocole de requête
$scheme
Signification : Le type de protocole utilisé par la requête actuelle.
Exemples de valeurs :
httpouhttps.
Adresse IP et port
$remote_addr
Signification : L'adresse IP du client.
Exemple de valeur :
30.40.XX.XXX.
$remote_port
Signification : Le numéro de port du client.
Exemple de valeur :
63213.
$x_server_addr
Signification : L'adresse IP de destination, qui est l'adresse IP virtuelle (VIP) que le nœud CDN expose vers l'extérieur.
Exemple de valeur :
122.228.XX.XXX.
$x_server_port
Signification : Le port de destination, qui est le port de service que le nœud CDN expose vers l'extérieur.
Exemples de valeurs :
80ou443.
Géolocalisation IP et opérateur
Le CDN utilise l'adresse IP du client ($remote_addr) pour résoudre sa géolocalisation et les informations sur son opérateur. Les valeurs de ces variables sont basées sur les résultats de la résolution GeoIP. La résolution GeoIP présente des limites de précision. Les champs au niveau de la ville et de longitude/latitude identifient généralement le centre-ville et ne conviennent pas aux cas d'utilisation de blocage nécessitant un géoblocage précis. Lorsqu'une adresse IP client ne peut pas être identifiée, les champs associés renvoient des valeurs par défaut (par exemple, le code pays renvoie XX et les valeurs de code numérique renvoient 0). Chaque dimension propose deux formes de valeur : un code (avec le suffixe _id) et un nom en anglais (avec le suffixe _en).
$ip_isp_id
Signification : Le code de l'opérateur auquel l'adresse IP du client appartient.
Exemple de valeur : Pour China Telecom,
100017.
$ip_isp_en
Signification : Le nom en anglais de l'opérateur auquel l'adresse IP du client appartient.
Exemple de valeur : Pour China Telecom,
ChinaTelecom.
$ip_country_id
Signification : Le code du pays ou de la région auquel l'adresse IP du client appartient.
Exemple de valeur : Pour la Chine,
CN.
$ip_country_en
Signification : Le nom en anglais du pays ou de la région auquel l'adresse IP du client appartient.
Exemple de valeur : Pour la Chine,
China.
$ip_region_id
Signification : Le code de la région ou de la province auquel l'adresse IP du client appartient.
Exemple de valeur : Pour la province du Guangdong,
440000.
$ip_region_en
Signification : Le nom en anglais de la région ou de la province auquel l'adresse IP du client appartient.
Exemple de valeur : Pour la province du Guangdong,
guangdong.
$ip_city_id
Signification : Le code de la ville auquel l'adresse IP du client appartient.
Exemple de valeur : Pour Shenzhen,
440300.
$ip_city_en
Signification : Le nom en anglais de la ville auquel l'adresse IP du client appartient.
Exemple de valeur : Pour Shenzhen,
shenzhen.
$ip_longitude
Signification : La longitude de la ville auquel l'adresse IP du client appartient.
Exemple de valeur : Pour Shenzhen,
114.05787.
$ip_latitude
Signification : La latitude de la ville auquel l'adresse IP du client appartient.
Exemple de valeur : Pour Shenzhen,
22.54309.
SSL/TLS
Les variables SSL/TLS fournissent des informations de session sur les requêtes HTTPS.
Ces variables s'appliquent uniquement aux requêtes HTTPS. Leurs valeurs sont vides lorsqu'elles sont référencées dans des requêtes HTTP.
Les variables
$ssl_client_*nécessitent également que la vérification du certificat client soit configurée au préalable. Leurs valeurs sont vides pour les requêtes HTTPS standard.
$ssl_cipher
Signification : La suite de chiffrement (une combinaison d'algorithmes cryptographiques) utilisée par la requête actuelle.
Exemple de valeur :
TLS_AES_256_GCM_SHA384.
$ssl_protocol
Signification : La version du protocole SSL/TLS utilisée par la requête actuelle.
Exemple de valeur :
TLSv1.3.
$ssl_client_cert
Signification : Les données du certificat client (le contenu du certificat est renvoyé).
$ssl_client_raw_cert
Signification : Les données brutes du certificat client (l'utilisation est la même que celle de
$ssl_client_certet le texte original du certificat est conservé).
$ssl_client_serial
Signification : Le numéro de série du certificat client.
$ssl_verify
Signification : Le résultat de la vérification du certificat client. La valeur est
SUCCESSlorsque la vérification réussit.Exemple de valeur :
SUCCESS.
$ssl_client_s_dn
Signification : Le nom distinctif (DN) du sujet du certificat client.
$ssl_client_i_dn
Signification : Le nom distinctif (DN) de l'émetteur du certificat client.
Nom du nœud
$hostname
Signification : Le nom d'hôte du nœud CDN qui traite la requête actuelle.
Exemple de valeur :
cn2522(le nom réel du nœud fait foi).
Variables dans le domaine de récupération auprès de l'origine
$scheme, $http_x_client_scheme et $proxy_scheme renvoient tous le type de protocole (http ou https), mais ils diffèrent par leur domaine d'application et par la valeur que chacun renvoie :
|
Variable |
Domaine d'application |
Description |
|
|
Le domaine d'accès |
Le type de protocole utilisé par la requête actuelle |
|
|
Le domaine de récupération auprès de l'origine |
Le type de protocole que le client utilise pour initier la requête (schéma client) |
|
|
Le domaine de récupération auprès de l'origine |
Le type de protocole que le nœud CDN utilise pour la récupération auprès de l'origine (schéma de récupération auprès de l'origine) |
Protocole
$http_x_client_scheme
Signification : Le type de protocole que le client utilise pour initier la requête (schéma client).
Exemples de valeurs :
httpouhttps.
$proxy_scheme
Signification : Le type de protocole que le nœud CDN utilise pour la récupération auprès de l'origine (schéma de récupération auprès de l'origine).
Exemples de valeurs :
httpouhttps.
Serveur d'origine
$proxy_source
Signification : L'adresse du serveur d'origine vers lequel la requête actuelle est réellement envoyée pour la récupération auprès de l'origine.
Exemples de valeurs :
origin.example.comou192.0.2.1.
En-têtes de réponse de l'origine
$sent_http_<response-header-name>
Signification : La valeur d'un en-tête de réponse HTTP spécifique dans la réponse de l'origine. Remplacez
<response-header-name>par le nom réel de l'en-tête de réponse.Exemple de valeur :
$sent_http_content_typereprésente la valeur de l'en-tête de réponseContent-Typedu serveur d'origine, tel quetext/html.Note : Les noms de variables d'en-tête de réponse doivent respecter les conventions de nommage des variables d'en-tête.