Neler oluyor?
Beri, Debian veya Ubuntu kullanıyor olmalı kötülük sites-available / sites-enabledmantık tarafından kullanılmaz nginx upstream ambalaj dan http://nginx.org/packages/ .
Her iki durumda da, her ikisi de standart includedirektifin yardımı ile bir yapılandırma sözleşmesi olarak uygulanır /etc/nginx/nginx.conf.
İşte /etc/nginx/nginx.confnginx.org'dan resmi bir yukarı akış nginx paketinin parçası:
http {
…
include /etc/nginx/conf.d/*.conf;
}
İşte /etc/nginx/nginx.confDebian / Ubuntu'dan bir pasaj :
http {
…
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Bu nedenle, NGINX'in bakış açısından tek fark, dosyaların conf.ddaha önce işlenmesinden kaynaklanacak ve bu şekilde, eğer birbirleriyle sessizce çatışan konfigürasyonlara sahipseniz, o zamankiler öncekilerden conf.döncelikli olabilir sites-enabled.
İyi Uygulama mı conf.d.
/etc/nginx/conf.dStandart bir kongre olduğu için kullanıyor olmalısınız ve her yerde çalışmalısınız.
Bir siteyi devre dışı bırakmanız gerekirse, dosya adını artık bir .confsonek, çok kolay, basit ve hatasız hale gelmeyecek şekilde yeniden adlandırın :
sudo mv -i /etc/nginx/conf.d/default.conf{,.off}
Veya bir siteyi etkinleştirmek için tam tersi :
sudo mv -i /etc/nginx/conf.d/example.com.conf{.disabled,}
Kaçının sites-availableve sites-enabledHer Neyse.
sites-available/ sites-enabled: Kullanmak için kesinlikle hiçbir neden göremiyorum.
Bazı insanlar bahsettiler nginx_ensiteve nginx_dissitesenaryolar - bu senaryoların isimleri bu debacle'nin geri kalanından bile daha kötü - ama bu senaryolar aynı zamanda bulunamayacak bir yerde değil nginx- Debian'da (ve muhtemelen Ubuntu'da da) bile yok. , ve kendi paketlerinde bulunmuyor, ayrıca, iki dizin arasındaki dosyaları basitçe taşımak ve / veya bağlamak için gerçekten de standart dışı bir üçüncü taraf komut dosyasına ihtiyacınız var mı ?!
Ve eğer komut dosyalarını kullanmıyorsanız (aslında yukarıdakilere göre akıllıca bir seçimdir), o zaman siteleri nasıl yönettiğiniz konusunda bir sorun var:
- Eğer gelen sembolik bağlantılar oluşturmak musunuz
sites-availableiçin sites-enabled?
- Dosyaları kopyala?
- Dosyalar taşınsın mı?
- Yerinde dosyalar düzenleniyor
sites-enabledmu?
Yukarıdakiler, bazı kişiler sistemi yönetmeye başlayana kadar ya da hızlı bir karar verene kadar sadece birkaç ay ya da yıllarca unutmak için çözülecek bazı küçük sorunlar gibi görünebilir.
Bu bizi bize getiriyor:
Bir dosyayı kaldırmak güvenli sites-enabledmidir? Yumuşak bağlantı mı? Sert bir bağlantı mı? Veya yapılandırmanın tek kopyası? Yapılandırma cehenneminin en iyi örneği.
Hangi siteler devre dışı bırakıldı? (İle conf.d, sadece .conf- ile bitmeyen find /etc/nginx/conf.d -not -name "*.conf"ya da kullanamayan dosyaları ters çevirme araması yapın grep -v.)
Yukarıdakilerin tümü değil, aynı zamanda includeDebian / Ubuntu tarafından kullanılan özel yönergeye de dikkat edin - /etc/nginx/sites-enabled/*- için sites-enabledaksine hiçbir dosya adı soneki belirtilmez conf.d.
- Bunun anlamı, bir gün içinde bir veya iki dosyayı hızlı bir şekilde düzenlemeye karar verirseniz
/etc/nginx/sites-enabledve ani emacsgibi bir yedekleme dosyası oluşturursanız default~, aniden, kullanılan direktiflere bağlı olarak bile kullanamayabileceğiniz aktif bir yapılandırma olarak ekler defaultve default~eklemiş olursunuz. Herhangi bir uyarı ve uzun bir hata ayıklama oturumu gerçekleşmesine neden olur. (Evet, bana da oldu; bir hackathon sırasındaydı ve kafamın neden işe yaramadığı konusunda tamamen şaşırmıştım.)
Böylece sites-enabledsaf kötülük olduğuna ikna oldum !
www-dataayrı bir konudur. Çoğu işletim sistemi, işlemin 80 numaralı bağlantı noktasına root olarak bağlandıktan sonra çalışabileceği daha düşük izinlere sahip ayrı bir kullanıcı tanımlar. Config dosyasında tanımlanmıştır. Temel güvenlik uygulamalarını oradan uygulayın; Kullanıcının, web sunucusunun yazması gerekmeyen herhangi bir şeyi yazmasına izin verme, kasıtlı olmadığı sürece diğer kullanıcıların dosyalara yazmasına izin vermeyin.