Sürümü gizlemek için bir seçenek var, bu yüzden sadece nginx görüntüleyecek, ancak bunu gizlemenin bir yolu var, böylece hiçbir şey göstermeyecek veya başlığı değiştirmeyecek mi?
Sürümü gizlemek için bir seçenek var, bu yüzden sadece nginx görüntüleyecek, ancak bunu gizlemenin bir yolu var, böylece hiçbir şey göstermeyecek veya başlığı değiştirmeyecek mi?
Yanıtlar:
Apache gibi, bu kaynak için hızlı bir düzenleme ve yeniden derleme. Gönderen Calomel.org :
Server: string, hangi tür http sunucusunu çalıştırdığınızı ve muhtemelen hangi sürümü kullandığınızı söylemek için istemciye geri gönderilen başlıktır. Bu dize, Alexia ve Netcraft gibi yerler tarafından internette kaç ve ne tür web sunucusunun canlı olduğu hakkında istatistik toplamak için kullanılır. Nginx'in yazarını ve istatistiklerini desteklemek için bu dizeyi olduğu gibi tutmanızı öneririz. Ancak, güvenlik için insanların ne çalıştırdığınızı bilmesini istemeyebilirsiniz ve bunu kaynak kodunda değiştirebilirsiniz.
src/http/ngx_http_header_filter_module.c
48 ve 49. satırlara bakarak kaynak dosyayı düzenleyin . Dizeyi istediğiniz herhangi bir şeyle değiştirebilirsiniz.
## vi src/http/ngx_http_header_filter_module.c (lines 48 and 49)
static char ngx_http_server_string[] = "Server: MyDomain.com" CRLF;
static char ngx_http_server_full_string[] = "Server: MyDomain.com" CRLF;
Mart 2011 edit: Nginx'in standart HttpHeadersModule'unu çatallı HttpHeadersMoreModule ile değiştirerek yeni bir seçeneğe işaret ettiği için aşağıdaki Flavius Props . Standart modülü yeniden derlemek hala hızlı bir çözümdür ve standart modülü kullanmak istiyorsanız ve sunucu dizesini sık sık değiştirmeyecekseniz mantıklıdır. Ancak bundan daha fazlasını istiyorsanız, HttpHeadersMoreModule güçlü bir projedir ve HTTP başlıklarınızla her türlü çalışma zamanı kara büyü yapmanıza izin verir.
r->headers_out.server
.
Bir arka uç uygulamasını proxy yapmak için nginx kullanıyorsanız ve arka ucun, Server:
nginx üzerine yazmadan kendi başlığının reklamını yapmasını istiyorsanız, stanza'nızın içine server {…}
girip şunları ayarlayabilirsiniz:
proxy_pass_header Server;
Bu, nginx'i bu üstbilgiyi yalnız bırakmaya ikna edecek ve arka uç tarafından ayarlanan değeri yeniden yazmayacaktır.
Son güncelleme bir süre önceydi, işte Ubuntu'da benim için çalışan şey:
sudo apt-get update
sudo apt-get install nginx-extras
Ardından , genellikle /etc/nginx/nginx.conf konumunda bulunan http
bölümüne aşağıdaki iki satırı ekleyin nginx.conf
:
sudo nano /etc/nginx/nginx.conf
server_tokens off; # removed pound sign
more_set_headers 'Server: Eff_You_Script_Kiddies!';
Ayrıca, nginx ile yeniden başlatmayı da unutmayın sudo service nginx restart
.
more_set_headers 'Server: ';
Basit, /etc/nginx/nginx.conf dosyasını düzenleyin ve yorumu kaldırın
#server_tokens off;
Http bölümünü arayın .
Çok basit: Bu satırları sunucu bölümüne ekleyin:
server_tokens off;
more_set_headers 'Server: My Very Own Server';
nginx-extra
bu modülü almak için yükleyebilirsiniz .
Özel bir modül var: http://wiki.nginx.org/NginxHttpHeadersMoreModule
Bu modül, belirttiğiniz herhangi bir çıktı veya giriş başlığını eklemenize, ayarlamanıza veya silmenize olanak tanır.
Bu standard geliştirilmiş bir versiyonudur başlıklarıyla neye "başlıklarına yerleşik" sıfırlama veya takas gibi daha yardımcı programları sağlar çünkü modülü
Content-Type
,Content-Length
veServer
.Ayrıca , çıkış başlıklarını more_set_headers ve more_clear_headers yönergelerinde değiştirirken, seçeneği
-s
kullanarak isteğe bağlı bir HTTP durum kodu ölçütleri ve seçeneği kullanarak isteğe bağlı bir içerik türü ölçütleri belirtmenize olanak tanır ...-t
--add-module=/path-to-headers-more-nginx-module
Nginx Extras'ı yükleyin
sudo apt-get update
sudo apt-get install nginx-extras
Nginx.conf dosyasına aşağıdaki iki satır eklenerek sunucu ayrıntıları yanıttan kaldırılabilir (http bölümünün altında)
more_clear_headers Server;
server_tokens off;
yum install nginx-extras
Nginx'in kaynaktan derlenmesini gerektirir ( işe yaramaz - bu çalışmanın Debia / Ubuntu vb. İle çalıştığını düşünüyorum apt-get
.)
Üstbilgiyi beş veya daha az harfli başka bir dizeye değiştirmeniz yeterliyse, ikiliyi yamalayabilirsiniz.
sed -i 's/nginx\r/thing\r/' `which nginx`
Bir çözüm olarak birkaç önemli avantajı vardır. Yani, dağıtımınız için nginx-extras mevcut olmasa bile, nginx sürümlendirmenizin paket yöneticisi tarafından işlenmesine izin verebilirsiniz (bu nedenle, kaynaktan derleme yok) ve ek herhangi bir şey için endişelenmenize gerek yok nginx-extras'ın savunmasız olması gibi bir kod.
Tabii ki, server_tokens off
sürüm numarasını gizlemek veya bu format dizesini yamalamak için seçeneği ayarlamak isteyeceksiniz .
"Beş harf veya daha az" diyorum çünkü elbette her zaman değiştirebilirsiniz:
nginx \ r \ 0
ile
bob \ r \ 0 \ r \ 0
son iki baytı değişmeden bırakır.
Aslında beşten fazla karakter istiyorsanız, server_token'leri açık bırakmak ve (biraz daha uzun) format dizesini değiştirmek isteyeceksiniz, ancak yine de bu uzunluk üzerinde - 1 ( satırbaşı).
... Yukarıdakilerin hiçbiri size mantıklı gelmiyorsa veya daha önce hiç bir ikili kod eklemediyseniz, bu yaklaşımdan uzak durmak isteyebilirsiniz.
sed
yukarıdaki komutu çalıştırırsınız , `which nginx`
bölüm ikilinin yolunu döndürür ve sed
komut bayt değişimini yapar.
nginx
Değişikliklerin yürürlüğe girmesi için yeniden başlatmanız gerekirse şaşırmam . Bütün bunlar ne dedi? Diğer cevaplardan birini kullanmamanızı tavsiye ediyorum. Söylediğim her şey size zaten aşina değilse ve /etc
dizinin ne için olduğunu bilmiyorsanız , böyle bir kesmek tehlikeli olabilir.
Tek yol src / http / ngx_http_header_filter_module.c dosyasını değiştirmektir. 48. satırdaki nginx'i farklı bir dizeye değiştirdim.
Nginx config dosyasında yapabilecekleriniz server_tokens değerini kapalı olarak ayarlamaktır . Bu, nginx'in sürüm numarasını yazdırmasını önleyecektir.
Bir şeyleri kontrol etmek için kıvırmayı deneyin -I http://vurbu.com/ | grep Sunucusu
Geri dönmeli
Server: Hai
Parthian Shot'un cevabını okuduktan sonra /usr/sbin/nginx
ikili dosyaya giriyorum . Sonra dosyanın bu üç satırı içerdiğini öğrendim.
Server: nginx/1.12.2
Server: nginx/1.12.2
Server: nginx
Temelde ilk ikisi server_tokens on;
yönerge içindir (Sunucu sürümü dahil). Sonra arama ölçütlerini ikili dosyadaki bu satırlarla eşleşecek şekilde değiştiriyorum.
sed -i 's/Server: nginx/Server: thing/' `which nginx`
Daha ileri kazdıktan sonra nginx tarafından üretilen hata mesajının da bu dosyaya dahil olduğunu öğrendim.
<hr><center>nginx</center>
Bunlardan üçü, biri versiyonsuz, ikisi versiyon içeriyordu. Bu yüzden hata iletisi içinde nginx dizesini değiştirmek için aşağıdaki komutu çalıştırın.
sed -i 's/center>nginx/center>thing/' `which nginx`
/usr/sbin
klasör içinde yürütülen ilk komutunuz bunu verir:sed: can't read is: No such file or directory
Nginx belgelerine göre özel değerleri veya hatta hariç tutmayı destekler:
Syntax: server_tokens on | off | build | string;
ancak ne yazık ki sadece ticari bir abonelikle :
Ayrıca, ticari aboneliğimizin bir parçası olarak, 1.9.13 sürümünden başlayarak, hata sayfalarındaki imza ve “Sunucu” yanıt başlığı alan değeri, değişkenler içeren dize kullanılarak açıkça ayarlanabilir. Boş bir dize “Sunucu” alanının yayılmasını devre dışı bırakır.
Gönderinin biraz eski olduğunu biliyorum, ancak kaynaktan nginx derlemeden Debian tabanlı dağıtım üzerinde çalışan bir çözüm buldum.
İlk önce nginx-extras paketini kurun
sudo apt install nginx-extras
Sonra nginx.conf dosyasını düzenleyerek ve sunucu bloğuna aşağıdaki satırı ekleyerek nginx http headers more modülünü yükleyin
load_module modülleri / ngx_http_headers_more_filter_module.so;
Tamamlandığında, more_set_headers ve more_clear_headers yönergelerine erişebilirsiniz.
Nginx-extra paketi kullanımdan kaldırıldı.
Bundan dolayı çeşitli paketler more_set_headers 'Sunucu: Benim Çok Kendi Sunucum' yüklemeye çalışırken aşağıdaki benim için çalıştı.
Sadece aşağıdakileri yapabilirsiniz ve hiçbir sunucu veya sürüm bilgisi geri gönderilmeyecektir
server_tokens '';
sadece sürüm numarasını kaldırmak istiyorsanız bu işe yarar
server_tokens off;
Yanıtta Sunucu üstbilgisi değerini mi soruyorsunuz? Bunu bir add_header yönergesi ile değiştirmeyi deneyebilirsiniz, ancak işe yarayıp yaramayacağından emin değilim. http://wiki.codemongers.com/NginxHttpHeadersModule