So entfernen Sie einen Antwort-header in nginx nach Lagerung Ihres Wertes im Falle von proxy_pass
Grundsätzlich, ich habe Probleme, um herauszufinden, einen Weg, um entfernen eine der response-header in nginx im Falle von proxy_pass, nachdem Sie Sie gespeichert in einer Variablen.
proxy_hide_header lässt mich nicht speichern Sie den Wert.
In anderen Worten:
Ich versuche für den Zugriff auf eine custom-Antwort-header, speichern es in eine variable, und es loswerden, damit es nicht weitergegeben werden an den client. Diese variable wird dann verwendet, in den access-logs.
Leider, die folgenden scheint nicht zu funktionieren:
http {
log_format main '$remote_addr $http_host $destination_addr [$time_local]
"$request" $status';
access_log /opt/logs/access.log main;
server {
listen 142.133.151.129:8090 default;
##This is my internal variable for the response header field
set $destination_addr "-";
location /{
proxy_pass http://my_upstream_server;
#store the response header field
set $destination_addr $sent_http_x_destination;
#now get rid of this response header field
set $sent_http_x_destination "";
}
}
}
Bin ich immer leere Werte für $sent_http_x_destination.
Hier ist der curl request und response:
# curl -Ov http://142.133.151.129:8090/ao3/vod/soccer/worldcup2014/final1
< HTTP/1.1 206 Partial Content
< Server: openresty/1.9.3.1
< Date: Tue, 16 Feb 2016 22:25:32 GMT
< Content-Type: application/octet-stream
< Content-Length: 99990100
< Connection: keep-alive
< X-Destination: 142.133.151.94
Weiß jemand, wie die Entfernung von "X-Destination" an, nachdem es gespeichert und für den access log? Ich bin immer "$destination_addr" mit einem leeren Wert.
Dank
proxy_hide_header my-custome-header;
und funktionierte wie erwartet. Es entfernt die header aus der Antwort, aber die variable $upstream_http_my_custom_header
ist in das Protokoll geschrieben werden.InformationsquelleAutor developer | 2016-02-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
könnte man
proxy_hide_header
zu entfernen-header zurückgegeben NGINX aus dem proxy, siehe ngx_http_proxy_module docs$upstream_http_x_destination
kann zur Anmeldung verwendet werden, siehe ngx_http_upstream_module docsumschreiben von deiner config würde so Aussehen:
InformationsquelleAutor anapsix
Nur so kann ich sehen, ist das erstellen eines lua-Skripts, die re-Implementierung der proxy-pass mit http-resty, speichert die header in nginx variable und entfernt es richtig vor der Rückkehr. Die gespeicherten nginx Variablen werden dann verwendet für die Zugriff-logs.
Das ist meine Antwort.
Ich hatte gehofft, dass nginx bietet eine einfachere Möglichkeit, das zu tun.
Bitte lassen Sie mich wissen, Ihre Kommentare auf diese Antwort.
Vielen Dank für alle Ihre Beiträge zu diesem Thema!
InformationsquelleAutor developer
Ich bin mir nicht ganz sicher, aber ich denke, dass, solange Sie darauf angewiesen, die header für die Protokolle, es muss festgelegt werden, wie ein header... sonst, die Protokolle werden nicht in der Lage, es zu benutzen.
Gesagt haben, dass, können Sie versuchen,
proxy_hide_header
und sehen, ob es funktioniert.Wie ich schon sagte, wenn Sie planen, es zu benutzen auf Protokolle, Sie können nicht machen es verschwinden. Die Protokolle hängen von den Kopf-und diese header wurden schon gesendet" für den Benutzer, wenn Sie geschrieben werden, auf die logs.
InformationsquelleAutor peixotorms