Bir dosya sunmadan 200 Nginx config ile cevap


122

Apache'yi bu yapılandırma satırında herhangi bir dosya sunmadan 200 yanıt geri gönderecek şekilde yapılandırdım.

Redirect 200 /hello

Bunu Nginx ile yapabilir miyim? Bir dosya sunmak istemiyorum, sadece sunucunun 200 ile yanıt vermesini istiyorum (Ben sadece isteği kaydediyorum).

Bir dizin dosyası ekleyebileceğimi ve aynı şeyi başarabileceğimi biliyorum, ancak bunu config içinde yapmak yanlış gidebilecek bir şey daha var demektir.

Yanıtlar:


261

Evet yapabilirsin

location / {
    return 200 'gangnam style!';
    # because default content-type is application/octet-stream,
    # browser will offer to "save the file"...
    # if you want to see reply in browser, uncomment next line 
    # add_header Content-Type text/plain;
}

1
cevaba nasıl yeni bir satır eklerim? gangnam\nstyle?
tback

1
Tabii ki tback, haklısın
cadmi

4
add_header, eski 'Content-type' yerine başka bir başlık eklediğinden benim için çalışmıyor. Cevabımda 2 adet 'Content-type' başlığı var: $ curl -v localhost / healthcheck / h1_pio> GET / healthcheck / h1_pio HTTP / 1.1> Kullanıcı Aracısı: curl / 7.38.0> Host: localhost> Kabul et: / > <HTTP / 1.1 200 OK <Tarih: Salı, 11 Eki 2016 13:27:53 GMT <İçerik Türü: uygulama / octet-stream <İçerik Uzunluğu: 25 <Bağlantı: canlı tutma <İçerik Türü: application / json
jmcollin92

1
@ jmcollin92 Yorumunuz sorulan ve cevabın verildiği soru ile ilgisi yok. çünkü açıkça bir çeşit proxy_pass, fascgi_pass, neyse ... ama yine de yer / healthcheck / h1_pio {# proxy_pass blablabla'ya neye ihtiyacın olduğunu; proxy_hide_header İçerik Türü; add_header İçerik Türü uygulaması / json; } gelecekte, sorunuzu doğru bir şekilde ve uygun bir yerde sorun
cadmi 12:16 '

6
@ jmcollin92, başka bir yerde bildirilen bir default_type dosyanız varsa oluşabilir. Yönergenin default_type text/plain;yerine, konum bloğunun içini kullanarak geçersiz kılabilirsiniz add_header.
tjb1982

20

Bir 204 kullanmanız gerekir, çünkü Nginx cevap gövdesi olmayan bir 200'e izin vermez. Bir 204 göndermek için basitçe kullanmak dönüş direktifi ile return 204;uygun konumda.


Bunu bir tarayıcıdan izlemeye çalışırsanız, hiçbir şey yapmamış gibi görünecektir. bu kasıtlı. Sen hiçbir şey yapmadın (204), hiçbir şey göstermiyor. Bir 204 görev yaptığını kanıtlamak için kullan curl.
jnovack

4

Durum kodu tanımlarına göre, bunun 204 olmasını istediğinizi ve 200 değil 200 olduğunu belirtmek istediğinizi düşünüyorum. 200'ün bu sorunun cevabında bir kaynak olması gerekiyor, ya da çoğu aklı başında tarayıcıların bununla karıştığından şüpheleniyorum. Kullanabileceğiniz diğer, önbellek içeriği için olan 304'tür.

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html


Tabii, 204 yap, nasıl yaparım? Çok fazla kuşku duymama rağmen, herhangi bir tarayıcı boş bir gövdeyle karıştırılacak.
Theo

1
boş bir gövde hala, boş bir index.html gibi bir nesneyle yanıttır. İstediğiniz, kendisine bağlı hiçbir kaynak eklenmemiş bir 200 yanıt sağlamaktır (dosya sunulmamıştır). Nginx'te tam olarak nasıl yapılacağına gelince, kendime bakmam gerekiyor, bunu sadece bir kez apache'de yaptım ve elimden hatırlayamıyorum.
sandroid 20

304 hata ayıklama ve geçici iadeler gibi şeyler için tüm yanlış sinyalleri gönderecek gibi görünüyor.
Kzqai

2

@Martin Fjordval'ın cevabını tamamlamak için, sağlık kontrolü yapmak için böyle bir yapılandırma kullanıyorsanız dikkatli olun.

Bir iken 204HTTP kodu bir Healthcheck (içeriksiz başarı göstergesi) için semantik olarak mükemmeldir, bazı hizmetler yapmak değil bu bir başarı düşünün.

Yani, Google Cloud Load dengeleyicilerle ilgili bir sorun yaşadım .

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.