Varsayılan sunucuyu önlemenin en iyi yolu?


26

Çok sayıda vhost'um var ve varsayılan vhost'u boş sayfa, hata sayfası veya genellikle Nginx'in kaynaklarının en verimli kullanımı ne olursa olsun, "diğer vhost'ların erişimine izin vererek" kapatmak "istiyorum. önceden tanımlanmış alanlar.

Yanıtlar:


42

Bir HTTP 444 kodu döndüren bir default_server tanımlayın :

server {
    listen      80 default_server;
    server_name _;
    return      444;
}

(4xx hata kodunun döndürülmesi, isteklerin bir müşteri tarafından başarısız bir istek olarak yorumlanabileceği anlamına gelir, bunun yerine bir HTTP 200 Boş Sayfa Ancak Tamamen İşe Güvendi Bana .)


2
444 standart olmayan bir nginx özel kodudur: "bağlantıyı kapatan özel bir nginx'in standart olmayan 444 kodu" döndürülür
bzeaman

2
Bu https için çalışmıyor. Basit bir dinleme 443 default_server ya ssl anlaşması her şeyden önce gerçekleşir ve nginx 444'ü döndürmeden önce hata verir. Çalışmam gereken bir çözüm var ama çalışmalıyım, varsayılan https sunucusu için ve imzalı Tarayıcı hatalarını önlemek için http’e yönlendirin.
Simon Bengtsson

SSL bağlantılarını reddetmek için güzel bir yol sağlayan nginx bileti burada . Ayrıca , geçici bir ayar sağlarlar ssl_ciphers aNULL;.
nh2

Ben (nginx kendi gibi olmayan SNI özellikli HTTPS istemcileri kıracak söz geçici çözümü Not proxy_pass, ayarladığınız sürece proxy_ssl_server_name on;başka herhangi ulaşmasını) server_names(şimdiye esasen mola meşru server_nameo port 443 için s do aracılığıyla izin vermek istiyorum). Ayrıntılar için trac.nginx.org/nginx/ticket/195#comment:11 adresini ziyaret edin.
nh2

4

Sadece boş index.html dosyası ile dizine işaret edecek varsayılan vhost'u tanımlayın .

server {
    listen       80 default_server;
    server_name  _ ;
    root /var/www/placeholder ; 
    index index.html;
}

ve / var / www / placeholder içine boş bir dizin yerleştirin


alan adlarınızdan hiçbirine isabet etmeyen her isteği yakalar ve boş sayfayla yanıt verir.
wojciechz

Sadece return '';yerine yapamaz mısın root...index?
oriadam

0

neden sadece inkar etmiyorsun

server {
    listen       80 default_server;
    server_name  _;

    location / {
        deny    all;
    }
}
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.