Nginx ile ilgili bakım sayfası, en iyi uygulamalar


13

Sunucuyu, bir bakım sayfası varsa gösterecek şekilde yapılandırmak istiyorum. Bu kodu denedim ve çalışıyor:

location / {
    try_files /maintenance.html $uri $uri/ @codeigniter;
}

Ancak 200 durum kodu ile sunulacağını fark ettim ve arama motorlarında karışıklığa neden olabilir. Bence en iyi uygulama bir 503 durum kodu döndürmek olacaktır. Google ben gibi bu konuda çeşitli alakalı sayfaları bulmak bu . Ancak, yönlendirmeyi yapmak için kullanırlar ve nginx belgelerine göre ifs kullanmak güvenli değildir.

Eğer kullanmadan yapmanın bir yolu var mı? Bu durumda kullanmak güvenli midir?

Teşekkürler.

Yanıtlar:


7

Bence en iyi uygulama 500 durum kodu döndürmek olacaktır.

Sanırım 500 yerine 503 demek istedin.

ifyönlendirmeyi yapmak için kullanırlar ve nginx belgelerine göre ifs kullanmak güvenli değildir.

Hayır Yalnızca returnolan % 100 güvenli içinde ifde locationbağlamda.

Nginx belgelerine göre , son argüman olarak bir HTTP durum kodu belirleyebilirsiniz try_files. Bunu denedim ama işe yaramadı.


21

İşte yaptığım şey.

            if (-f $document_root/maintenance.html) {
                    return 503;
            }
            error_page 503 @maintenance;
            location @maintenance {
                    rewrite ^(.*)$ /maintenance.html break;
            }

Dosya oradaysa, bakım sayfasını gösterecektir. Dosyayı kaldırdığınızda normale dönersiniz.


2
Evet, bu sorudaki bağlantıdaki kodla aynı. Aslında belgelereif göre kullanılmaması gerektiği için bu durumda s kullanmanın güvenli olup olmadığını soruyorum .
NeDark

1
Aynı dokümantasyon: In some cases it's also possible to move ifs to server level (where it's safe as only other rewrite module directives are allowed within it).Mike'ın gösterdiği bakım hatası_sayfası normalde sunucu {} bağlamında ayarlanır.
Regan

1
Ben sadece dosyanın varlığını kontrol etmeden bir 'dönüş 503' yaptım dışında aynı yaptım. Bu şekilde, siteyi symlinking yaparak etkinleştirebilir / devre dışı bırakabilirim (Debian'ın "siteler için kullanılabilir" / "siteler için etkin" düzenini kullanarak) ve bakım sayfasını açabilirsiniz.
Asfand Qazi

2
Bunun gibi bir performans hit olurdu: NGINX her istek için bir dosyanın varlığını kontrol etmek gerekecek ...
Marc

2
Marc, yaygın erişilen dosyalar bellekte olan dosya sistemi önbelleğinde saklandığından değil.
Mike
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.