Neler oluyor?
Beri, Debian veya Ubuntu kullanıyor olmalı kötülük sites-available
/ sites-enabled
mantık tarafından kullanılmaz nginx upstream ambalaj dan http://nginx.org/packages/ .
Her iki durumda da, her ikisi de standart include
direktifin yardımı ile bir yapılandırma sözleşmesi olarak uygulanır /etc/nginx/nginx.conf
.
İşte /etc/nginx/nginx.conf
nginx.org'dan resmi bir yukarı akış nginx paketinin parçası:
http {
…
include /etc/nginx/conf.d/*.conf;
}
İşte /etc/nginx/nginx.conf
Debian / 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.d
daha ö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.d
Standart 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 .conf
sonek, ç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-available
ve sites-enabled
Her Neyse.
sites-available
/ sites-enabled
: Kullanmak için kesinlikle hiçbir neden göremiyorum.
Bazı insanlar bahsettiler nginx_ensite
ve nginx_dissite
senaryolar - 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-available
için sites-enabled
?
- Dosyaları kopyala?
- Dosyalar taşınsın mı?
- Yerinde dosyalar düzenleniyor
sites-enabled
mu?
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-enabled
midir? 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 include
Debian / Ubuntu tarafından kullanılan özel yönergeye de dikkat edin - /etc/nginx/sites-enabled/*
- için sites-enabled
aksine 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-enabled
ve ani emacs
gibi bir yedekleme dosyası oluşturursanız default~
, aniden, kullanılan direktiflere bağlı olarak bile kullanamayabileceğiniz aktif bir yapılandırma olarak ekler default
ve 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-enabled
saf kötülük olduğuna ikna oldum !
www-data
ayrı 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.