Apache ortam değişkenli RequestHeader


13

Bir yük dengeleyici olarak ayarlanmış Apache'im var. Apache'nin X-Forwarded-Proto üstbilgisini ayarlamasını istedim, ancak bu çalışmıyor:

RequestHeader set X-Forwarded-Proto "%{SERVER_PROTOCOL}e"

Üstbilgi null değerine ayarlanır. Neden olduğu hakkında bir fikrin var mı?

Yanıtlar:


15

Geç ama yine de, aynı sorunu ele aldım ve bu benim için çalıştı:

RequestHeader set X_FORWARDED_PROTO 'https' env=HTTPS

Dokümantasyon diyor ki:

RequestHeader yönergesi add, append veya set bağımsız değişkeni ile birlikte kullanıldığında, eylemin gerçekleştirileceği koşulları belirtmek için dördüncü bir bağımsız değişken kullanılabilir. Env = ... bağımsız değişkeninde belirtilen ortam değişkeni varsa (veya ortam değişkeni yoksa ve env =! ... belirtilirse), RequestHeader yönergesi tarafından belirtilen eylem geçerli olur. Aksi takdirde, direktifin talep üzerinde hiçbir etkisi olmayacaktır.

HTTPS ortam değişkeni yalnızca istek SSL üzerinden yapıldığında ayarlanır.


3
En.wikipedia.org/wiki/List_of_HTTP_header_fields'e göre , başlığın alt çizgi yerine tire işareti olması gerekir: RequestHeader X-Forwarded-Proto 'https' env = HTTPS Bu aynı zamanda Amazon'un ELB'sinin gönderdiği başlıktır.
loevborg

9

Bunu istemiyorsun; başlığınızı "HTTP / 1.1" olarak ayarlayacaktır (bir https isteğinde bile) - muhtemelen ilettiğiniz içerik için çok yararlı değildir.

Http ve https için farklı VirtualHost bloklarınız var; sadece RequestHeaderher birinde ayarı sabitleyin .

<VirtualHost *:80>
    RequestHeader set X-Forwarded-Proto "http"
    ...
</VirtualHost>

<VirtualHost *:443>
    RequestHeader set X-Forwarded-Proto "https"
    ...
</VirtualHost>

1
Bu hala ortam değişkenlerinin neden çalışmadığı sorusuna cevap vermiyor. Ayrıca limanı ve bazıları bu şekilde kodlanamayan diğer değerleri korumak istedim.
John Crenshaw

3

earlyAnahtar kelimeyi kullanarak bunu düzeltebilirsiniz :

RequestHeader set X-Forwarded-Proto "https" early

Aksi takdirde, direktifler RewriteRuleyerine John Crenshaw'ın önerisini yapabilirsiniz ProxyPass.


1
Apache'nin bu üstbilgiyi gerçekten gönderip göndermediğini nasıl ayıklayabilirim?
codecowboy

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.