Frage Benutzerdefinierten Header von Nginx Reverse Proxy weiterleiten


Ich habe einen Nginx-Webserver, der als Reverse-Proxy fungiert, um Anfragen zur weiteren Verarbeitung an Apache weiterzuleiten (ich bitte Sie, nicht zu fragen, warum). Ich habe eine Anfrage, an die ich versuche, einen benutzerdefinierten Header anzuhängen, und ich möchte, dass nginx diesen benutzerdefinierten Header an Apache weiterleitet, damit ich etwas damit in einer App tun kann.

Ich habe durch die. Gestochen HttpProxyModule Dokumente, aber sie sind nicht sehr beschreibend, auch wenn ich am richtigen Ort bin (es könnte sehr gut sein, dass ich es nicht bin).

Wie kann ich nginx dazu bringen, einen weiterzuleiten? X-CUSTOM-REFERRER Header? Außerdem, wenn möglich, würde ich gerne weiterleiten irgendein benutzerdefinierter Header, der ankommt. Wenn letzteres zu viel verlangt wird, würde ersteres für mein aktuelles Bedürfnis ausreichen.

Wie Sie sehen können, bin ich sehr neu in nginx, daher wäre die Korrekturversion hilfreich.

Vielen Dank.

AKTUALISIEREN

Das relevante Snippet von meiner bestehenden Konfiguration:

location / {
    proxy_pass                  http://preview;
    proxy_redirect              off;
    proxy_set_header            Host $host;
    proxy_set_header            X-Real-IP $remote_addr;
    proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
    # proxy_set_header            X-Custom-Referrer $x_custom_referrer;
}

20
2018-05-22 18:45


Ursprung




Antworten:


Das proxy_set_header Richtlinie von der HttpProxyModul ermöglicht es Ihnen, dies zu tun. Zum Beispiel:

proxy_pass http://apachehost;
proxy_set_header X-Custom-Referrer $proxy_add_<header_field_name_from_last_request>;

16
2018-05-22 21:39



Danke, @morgen. Der eingehende Wert ist jedoch variabel. Kann ich einen Wert vom eingehenden lesen X-Custom-Referrer Header und es weitergeben? proxy_set_header X-Custom-Referrer $x_custom_referrer oder etwas in diesem Sinne? - Rob Wilkerson
Ja, Sie können verwenden $http_x_custom_referrer. Alle vom Client gesendeten Header sollten jedoch automatisch an das Backend übergeben werden. Hast du dich festgelegt? proxy_pass_request_headers off irgendwo? - mgorven
Nicht dass ich sehen kann. Ich habe meine Frage mit einem Snippet aus meiner Konfigurationsdatei aktualisiert. Dieser Header erreicht es definitiv nicht in der App. Das heißt, ich bin irgendwie angenommen dass die Quell-Apps es senden, also werde ich meine Due Diligence durchführen und sicher sein, dass dies das Standardverhalten sein sollte. - Rob Wilkerson
@RobWilkerson in deinem Snippet das Relevante proxy_set_header ist auskommentiert; auch du benutzt $x_custom_referrer anstatt $http_x_custom_referrer... - severin


Das Modul ngx_headers_mehr ermöglicht es Ihnen, HTTP-Header zu ändern und hinzuzufügen.


2
2018-05-22 18:58





Sie können Upstream-Header (beginnend mit $ http_) und zusätzliche benutzerdefinierte Header verwenden. Zum Beispiel:

add_header X-Upstream-01 $http_x_upstream_01;
add_header X-Hdr-01  txt01;

Als nächstes gehen Sie zur Konsole und stellen Sie eine Anfrage mit dem Header des Benutzers:

curl -H "X-Upstream-01: HEADER1" -I http://localhost:11443/

Die Antwort enthält X-Hdr-01, gesetzt von Server und X-Upstream-01, vom Client gesetzt:

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

1
2017-11-30 23:59