Co się dzieje?
Musisz używać Debiana lub Ubuntu, ponieważ zło sites-available / sites-enabledlogika nie jest używana przez upstream pakietu nginx ze strony http://nginx.org/packages/ .
W obu przypadkach oba są implementowane jako konwencja konfiguracji za pomocą standardowej includedyrektywy w /etc/nginx/nginx.conf.
Oto fragment /etc/nginx/nginx.confoficjalnego pakietu nginx z witryny nginx.org:
http {
…
include /etc/nginx/conf.d/*.conf;
}
Oto fragment /etc/nginx/nginx.confz Debian / Ubuntu :
http {
…
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Tak więc, z punktu widzenia NGINX, jedyną różnicą byłoby to, że pliki conf.dbędą przetwarzane wcześniej, i jako takie, jeśli masz konfiguracje, które dyskretnie ze sobą konfliktują, wtedy te z conf.dmogą mieć pierwszeństwo przed tymi w sites-enabled.
Najlepszą praktyką jest conf.d.
Powinieneś używać /etc/nginx/conf.d, ponieważ jest to standardowa konwencja i powinna działać wszędzie.
Jeśli chcesz wyłączyć witrynę, po prostu zmień nazwę pliku, aby nie mieć już .confsufiksu, jest to bardzo łatwe, proste i odporne na błędy:
sudo mv -i /etc/nginx/conf.d/default.conf{,.off}
Lub odwrotnie, aby włączyć witrynę:
sudo mv -i /etc/nginx/conf.d/example.com.conf{.disabled,}
Unikaj sites-availablei za sites-enabledwszelką cenę.
Nie widzę absolutnie żadnego powodu, aby używać sites-available/ sites-enabled:
Niektórzy wspominali nginx_ensitei nginx_dissiteskrypty - nazwy tych skryptów są jeszcze gorsze niż reszta tego niepowodzenia - ale skrypty te również nie można znaleźć - nie ma ich w nginxpakiecie nawet w Debianie (i prawdopodobnie również w Ubuntu) , a także nieobecne we własnym pakiecie, czy naprawdę potrzebujesz całego niestandardowego skryptu innej firmy, aby po prostu przenieść i / lub połączyć pliki między dwoma katalogami ?!
A jeśli nie korzystasz ze skryptów (co jest tak naprawdę dobrym wyborem, jak opisano powyżej), pojawia się kwestia zarządzania stronami:
- Czy tworzysz dowiązania symboliczne od
sites-availabledo sites-enabled?
- Skopiować pliki?
- Przenieś pliki?
- Czy edytować pliki na miejscu w
sites-enabled?
Powyższe może wydawać się drobnymi problemami do rozwiązania, dopóki kilku ludzi nie zacznie zarządzać systemem lub dopóki nie podejmiesz szybkiej decyzji, ale zapomnisz o tym miesiące lub lata później…
Co prowadzi nas do:
Czy usunięcie pliku jest bezpieczne sites-enabled? Czy to miękki link? Twardy link? Czy jedyna kopia konfiguracji? Doskonały przykład piekła konfiguracji.
Które strony zostały wyłączone? (Za pomocą conf.dpo prostu wykonaj wyszukiwanie inwersyjne plików, które nie kończą się na .conf- find /etc/nginx/conf.d -not -name "*.conf"lub użyj grep -v).
Nie tylko wszystkie powyższe, ale także zwróć uwagę na konkretną includedyrektywę używaną przez Debian / Ubuntu - /etc/nginx/sites-enabled/*- nie podano sufiksu nazwy pliku sites-enabled, w przeciwieństwie do conf.d.
- Oznacza to, że jeśli któregoś dnia zdecydujesz się szybko edytować plik lub dwa w nim
/etc/nginx/sites-enabled, i emacsutworzysz plik kopii zapasowej default~, to znaczy, że nagle masz jedno defaulti drugie default~jako aktywną konfigurację, która w zależności od zastosowanych dyrektyw może nawet nie dać ostrzeżenia i powodują przedłużenie sesji debugowania. (Tak, to mi się przydarzyło; miało to miejsce podczas hackatonu i byłem całkowicie zdziwiony, dlaczego moje conf nie działa).
Jestem zatem przekonany, że sites-enabledto czyste zło!
www-datato osobny temat. Większość systemów operacyjnych definiuje osobnego użytkownika z niższymi uprawnieniami, które proces może uruchomić po powiązaniu z portem 80 jako root. Jest zdefiniowany w pliku konfiguracyjnym. Zastosuj stamtąd podstawowe praktyki bezpieczeństwa; nie pozwól użytkownikowi pisać na cokolwiek, na co serwer sieciowy nie powinien pisać, nie pozwól innym użytkownikom pisać do plików, chyba że jest to celowe.