Nginx Ters Proxy'den İletim Özel Başlığı


25

Ek işleme için Apache'ye istek iletmek için ters vekil olarak davranan bir nginx web sunucum var (nedenini sormamanızı rica ediyorum). Özel bir başlık eklemeye çalıştığım bir isteğim var ve nginx'in bu özel başlığı Apache'ye iletmesini istiyorum, böylece bir uygulamada onunla bir şeyler yapabilirim.

İçinden dürttü ettik HttpProxyModuledokümanlar, ancak doğru yerde (çok iyi ben değilim olabilir) içinde olsam bile çok açıklayıcı değiliz.

Nginx'in bir X-CUSTOM-REFERRERbaşlığı iletmesini nasıl sağlayabilirim ? Üstelik, mümkünse, gelen herhangi bir özel başlık boyunca iletilmesini istiyorum . İkincisi sormayacak kadar fazlaysa, önceki benim şu anki ihtiyacım için yeterli olur.

Gördüğünüz gibi, ben nginx için çok yeniyim, bu yüzden düzeltici sürüm yardımcı olacaktır.

Teşekkürler.

GÜNCELLEŞTİRME

Mevcut konfigürasyonumdan ilgili snippet:

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;
}

Yanıtlar:


20

proxy_set_headerDan yönergesi HttpProxyModule bunu yapmak için izin verir. Örneğin:

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

1
Sağol, @mgorven. Ancak gelen değer değişkendir. Gelen X-Custom-Referrerbaşlıktan bir değer okuyabilir ve iletebilir miyim? proxy_set_header X-Custom-Referrer $x_custom_referrerya da bu etkiye bir şey?
Rob Wilkerson

1
Evet kullanabilirsiniz $http_x_custom_referrer. Ancak, müşteri tarafından gönderilen tüm başlıklar otomatik olarak arka uçlara iletilmelidir. Bir proxy_pass_request_headers offyere mi ayarladın ?
mgorven

Görebildiğimden değil. Sorumu config dosyasındaki bir snippet ile güncelledim. Bu başlık kesinlikle olsa, uygulamaya yapmıyor. Bununla birlikte, kaynak uygulamaların gönderdiğini varsayıyorum , bu yüzden durum tespiti yapıyorum ve bunun varsayılan davranış olup olmadığından emin olacağım.
Rob Wilkerson

Snippet'inizdeki @RobWilkerson ile ilgili proxy_set_headeryorum yapıldı; ayrıca $x_custom_referreryerine $http_x_custom_referrer...
severin

@ Mgorven'in cevabının $http_<custom_header_field>bunun yerine güncellenmesi gerektiğini düşünüyorum$proxy_add_<custom_header_field>
Tri Nguyen

2

Ngx_headers_more modülü http başlıklarını değiştirmenize ve eklemenize izin verir.


Bu modül cevaba başlık ekler. OP'nin istediği şey bu değil. A. Yönünde yukarı akışa ek bir başlık göndermeleri gerekir proxy_pass.
Victor Schröder

1

Giriş yukarı başlıklarını ($ http_ ile başlayan olarak adlandırılır) ve ek özel başlıkları kullanabilirsiniz. Örneğin:

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

daha sonra konsola gidin ve kullanıcının başlığı ile istekte bulunun:

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

Yanıt, sunucu tarafından ayarlanan X-Hdr-01 ve istemci tarafından ayarlanan X-Upstream-01 içeriyor:

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
Bu yanıtın üstbilgilerini ayarlıyor. OP, başlıkları bir proxy_passdirektifin akış yönüne gönderilmek üzere ayarlamak istiyor .
Victor Schröder
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.