Je veux utiliser le auth_request et oauth2_proxy Pour définir un en-tête sur une demande d'authentification réussie, puis transmettez-la à la prochaine proxy en ligne qui gérera la demande réelle.
J'ai configuré nginx et les différents proxy pour faire leur chose, mais je ne suis pas sûr comment définir l'en-tête du serveur (proxy d'authentification dans le diagramme) que j'utilise pour la demande d'authentification de sorte que cet en-tête soit passé à la Server suivant (serveur backend en diagramme)
NGINX ---- auth request ----> AUTH PROXY
|
| <--- 201 <------ SUCCESS
|
----> underlying request ----> BACKEND SERVER
Ma configuration nginx ressemble à
server {
listen 9123;
resolver 10.3.0.2;
resolver_timeout 30;
location / {
auth_request /_auth;
proxy_set_header x-user $http_x_user;
proxy_pass http://backend_server;
}
location = /_auth {
internal;
proxy_pass https://auth;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Original-URI $request_uri;
}
}
Lorsque je fais la demande réelle, je vois les points suivants dans les journaux de débogage Nginx (cela fait partie de la réponse du serveur d'authentification):
2013/10/14 17:46:42 [debug] 31222#0: *4 http proxy header: "Content-Type: text/html; charset=utf-8"
2013/10/14 17:46:42 [debug] 31222#0: *4 http proxy header: "Date: Mon, 14 Oct 2013 17:46:42 GMT"
2013/10/14 17:46:42 [debug] 31222#0: *4 http proxy header: "Server: nginx/1.2.5"
2013/10/14 17:46:42 [debug] 31222#0: *4 http proxy header: "Vary: Cookie"
2013/10/14 17:46:42 [debug] 31222#0: *4 http proxy header: "x-user: 1"
Je veux prendre le x-user
En-tête et transmettez-le vers le serveur de backend.
J'ai essayé diverses combinaisons dans le location /
bloquer mais aucun d'entre eux n'a encore travaillé. Par exemple.
proxy_set_header x-user $upstream_http_x_user;
proxy_set_header x-user $http_x_user;
proxy_set_header x-user $sent_http_x_user;
proxy_pass_header x-user
Aucun de ceux-ci ne semble fonctionner. Des idées comment je peux accomplir cette tâche? Veuillez noter que c'est le proxy d'authentifiant qui réglage l'en-tête que je veux passer au serveur Backend,
Woop, compris. La bonne configuration NGinx ressemble à ceci:
location / {
auth_request /_auth;
auth_request_set $user $upstream_http_x_user;
proxy_set_header x-user $user;
proxy_pass http://backend_server;
}
Le problème est que vous ne pouvez pas attribuer directement l'en-tête dans un autre en-tête, vous devez utiliser auth_request_set
Pour régler l'en-tête en une variable, puis assignez cette variable à un en-tête.