konum üzerine yazmada add_header yönergeleri sunucuda add_header yönergeleri


11

Kullanılması nginx 1.2.1 kullanıyorum birden başlıkları eklemek mümkün duyuyorum add_headerolarak aşağıdaki gibidir:

server {
    listen       80;
    server_name  localhost;
    root /var/www;
    add_header Name1 Value1;      <=== HERE
    add_header Name2 Value2;      <=== HERE

    location / {
        echo "Nginx localhost site";
    }
}

Sonuç

GET /
HTTP/1.1 200 OK
Name1: Value1
Name2: Value2

Ancak add_headeriçindeki yönergeyi kullandığımda, altındaki locationdiğer add_headeryönergeler serveryok sayılır

server {
    listen       80;
    server_name  localhost;
    root /var/www;
    add_header Name1 Value1;      <=== HERE
    add_header Name2 Value2;      <=== HERE

    location / {
        add_header Name3 Value3;  <=== HERE
        add_header Name4 Value4;  <=== HERE
        echo "Nginx localhost site";
    }
}

Sonuç

GET /
HTTP/1.1 200 OK
Name3: Value3
Name4: Value4

Dokümantasyon hem söylüyor serverve locationgeçerli contextve kullanarak bu durumu değil add_headerbir önler diğer kullanabilmesi.

S1: Bunun bir hata mı yoksa amaçlanan davranış mı olduğunu ve nedenini biliyor musunuz?

S2: Bunu düzeltmek için HttpHeadersMoreModulemodülü kullanmaktan başka seçenekler görüyor musunuz ?

Yanıtlar:


18

Bu beklenen davranıştır. add_headerHiçbir vardır ve ancak eğer nginx diğer tüm dizi tipi direktifleri gibi çok direktifleri, önceki düzeyden devralınan add_headergüncel düzeyde tanımlanan direktifler.

Nginx öğesinin içindeki tüm üstbilgileri eklemesini location /istiyorsanız, tümünü listelemeniz gerekir location /;

location / {
    add_header Name1 Value1;
    add_header Name2 Value2;
    add_header Name3 Value3;
    add_header Name4 Value4;
    return 200 "";
}

Büyük bir başlık alt kümesini tek bir yerde listelemek için bir yönteme ihtiyacınız varsa, bunun için includeyönerge kullanabilirsiniz . Dokümanlara buradan bakın .


Sadece direktifin add_headeriçinde var location, ama hala bu başlığın eklendiğini görmüyorum - herhangi bir fikir?
Aditya MP

@adityamenon Sadece bir tane var add_headermı? Yanıtınız evet ise, yanıt kodunun dokümanlar tarafından oluşturulduğundan emin olun, bkz. Nginx.org/r/add_header .
Maxim Dounin

Merhaba Maxim, Birkaç farklı sorunum vardı, sonunda çalışan bir yapılandırma var: stackoverflow.com/a/19135714/443219
Aditya MP

Bunu açıklayan nginx dokümanlarına bağlantı: nginx.org/tr/docs/http/ngx_http_headers_module.html#add_header
siliconrockstar
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.