J'utilise deux systèmes (les deux sont un équilibreur de charge Nginx et un agit en tant que système de sauvegarde).
Je veux ajouter et utiliser quelques en-têtes HTTP personnalisés.
Ci-dessous sont mes codes pour les deux;
upstream upstream0 {
#list of upstream servers
server backend:80;
server backup_load_balancer:777 backup;
#healthcheck
}
server {
listen 80;
#Add custom header about the port and protocol (http or https)
server_name _;
location / {
# is included since links are not allowed in the post
proxy_pass "http://upstream0;"
}
}
Système de sauvegarde
server {
listen 777;
server_name _;
#doing some other extra stuff
#use port and protocol to direct
}
Comment puis-je y arriver?
Pour ajouter un en-tête, ajoutez simplement le code suivant au bloc d’emplacement où vous souhaitez ajouter l’en-tête:
location some-location {
add_header X-my-header my-header-content;
}
Évidemment, remplacez les contenus x-my-header et my-header-content par ce que vous souhaitez ajouter. Et c'est tout ce qu'il y a à faire.
Vous pouvez utiliser des en-têtes en amont (nommés à partir de $ http_) et des en-têtes personnalisés supplémentaires. Par exemple:
add_header X-Upstream-01 $http_x_upstream_01;
add_header X-Hdr-01 txt01;
ensuite, allez à la console et faites une requête avec l'en-tête de l'utilisateur:
curl -H "X-Upstream-01: HEADER1" -I http://localhost:11443/
la réponse contient X-Hdr-01, définie par le serveur et X-Upstream-01, définie par le client:
HTTP/1.1 200 OK
Server: nginx/1.8.0
Date: Mon, 30 Nov 2015 23:54:30 GMT
Content-Type: text/html;charset=UTF-8
Connection: keep-alive
X-Hdr-01: txt01
X-Upstream-01: HEADER1