Sites-Enabled и Sites-Available: Пълно ръководство за NGINX и Apache
NGINX и Apache остават двата най-доминиращи уеб сървъра в интернет — и по добра причина. И двата са боевете тестване, силно конфигурируеми и способни да обслужват сложни, високотрафични уебсайтове с лекота. Един от най-важните концепции за всеки системен администратор, управляващ Linux базиран сървър, е разбирането как тези уеб сървъри обработват конфигурацията на уебсайта чрез структурата на директориите sites-available и sites-enabled.
Независимо дали управлявате един уебсайт или десетки виртуални хостове на VPS Hosting план, овладяването на този конфигурационен модел ще ви даде прецизен контрол върху това кои сайтове са активни, кои са в подготовка и как се разпределят ресурсите на вашия сървър.
Това ръководство предоставя всеобхватно, пошагово обяснение как да активирате, деактивирате и управлявате уебсайтове, използвайки както NGINX, така и Apache на Linux системи.
Разбиране на sites-available и sites-enabled
И NGINX, и Apache използват двудиректориен модел за разделяне на конфигурацията на сайта от активирането на сайта. Този архитектурен модел е елегантен в своята простота и изключително мощен на практика.
sites-available
Директорията /etc/nginx/sites-available/ или /etc/apache2/sites-available/ действа като библиотека на всички възможни конфигурации на сайтове. Всеки уебсайт, който възнамерявате да хостирате на сървъра, получава свой собствен конфигурационен файл, съхранен тук. Решаващо е, че файловете в тази директория не са активни — те определят конфигурацията, но не обслужват никакъв трафик, докато не бъдат изрично активирани.
sites-enabled
Директорията /etc/nginx/sites-enabled/ или /etc/apache2/sites-enabled/ съдържа символни връзки, които сочат към конфигурационни файлове в sites-available. Само сайтовете с активна символна връзка в тази директория се зареждат от уеб сървъра и се обслужват на посетителите.
Това разделяне предлага няколко ключни предимства:
- Неразрушаващо деактивиране: Можете да деактивирате сайт без да изтривате неговата конфигурация.
- Бързо развертване: Подготовката на нов сайт е толкова проста, колкото създаването на символна връзка.
- Чиста организация: Всички конфигурации съществуват на едно място, независимо дали са активни.
Управление на уебсайтове с Apache
1. Конфигурация на Apache Virtual Hosts
Apache използва Virtual Hosts за обслужване на множество уебсайтове от един екземпляр на сървъра. Всеки уебсайт получава свой собствен конфигурационен файл, който казва на Apache как да обработва входящите заявки за този домейн — включително коренната директория на документите, пътищата на логовете, псевдонимите на сървъра и още много.
Конфигурационните файлове за Apache виртуални хостове се съхраняват в:
/etc/apache2/sites-available/#### Създаване на конфигурационен файл на Virtual Host
За да създадете конфигурационен файл за сайт, наречен test.oo.md, изпълнете:
sudo nano /etc/apache2/sites-available/test.oo.md.confВътре в файла определете вашия блок на виртуален хост:
<VirtualHost *:80>
ServerAdmin admin@test.oo.md
ServerName your_domain_or_IP
ServerAlias www.test.oo.md
DocumentRoot /var/www/test.oo.md
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>> Забележка: Заменете your_domain_or_IP с вашето действително име на домейн или IP адрес на сървъра. Директивата ServerAlias позволява на Apache да отговори на поддомейна www също.
Запазете и затворете файла, когато сте готови.
2. Активирайте сайта с a2ensite
След като конфигурационният файл е на място, активирайте сайта, използвайки командата a2ensite (Apache 2 Enable Site):
sudo a2ensite test.oo.md.confТази команда автоматично създава символна връзка от sites-available към sites-enabled:
/etc/apache2/sites-enabled/test.oo.md.conf -> /etc/apache2/sites-available/test.oo.md.confСайтът сега е готов да бъде обслужван, но промените няма да влязат в сила, докато Apache не бъде преоразмерен.
3. Тестирайте конфигурацията на Apache
Преди да преоразмерите Apache, винаги валидирайте синтаксиса на вашата конфигурация, за да уловите всички грешки:
sudo apachectl configtestУспешният резултат ще покаже:
Syntax OKАко има грешки, Apache ще опише проблема и номера на реда — коригирайте тези преди да продължите.
4. Преоразмерете Apache, за да приложите промените
sudo systemctl reload apache2Използването на reload вместо restart е предпочитано в производствени среди, защото прилага новата конфигурация без прекъсване на активните връзки.
5. Деактивирайте сайт с a2dissite
За да отведете сайт офлайн без да изтривате неговата конфигурация, използвайте командата a2dissite:
sudo a2dissite test.oo.md.confТова премахва символната връзка от sites-enabled. Конфигурационният файл в sites-available остава неприкосновен. Преоразмерете Apache, за да приложите:
sudo systemctl reload apache2Управление на уебсайтове с NGINX
1. Конфигурация на NGINX Server Block
NGINX използва Server Blocks — функционалния еквивалент на Apache Virtual Hosts. Конфигурационните файлове на блока на сървъра се съхраняват в:
/etc/nginx/sites-available/#### Създаване на конфигурационен файл на Server Block
За да създадете конфигурационен файл за test.oo.md, изпълнете:
sudo nano /etc/nginx/sites-available/test.oo.mdОпределете вашия блок на сървъра вътре в файла:
server {
listen 80;
server_name test.oo.md www.test.oo.md;
root /var/www/test.oo.md;
index index.html index.htm;
access_log /var/log/nginx/test.oo.md_access.log;
error_log /var/log/nginx/test.oo.md_error.log;
location / {
try_files $uri $uri/ =404;
}
}> Обяснени ключови директиви:
> – listen 80 — Инструктира NGINX да слуша HTTP трафик на порт 80.
> – server_name — Определя кои имена на домейни този блок отговаря.
> – root — Задава коренната директория на документите за файловете на сайта.
> – try_files — Опитва се да обслужи поисканият файл или директория; връща 404, ако не е намерен.
2. Активирайте сайта, като създадете символна връзка
За разлика от Apache, NGINX не предоставя вградена команда като a2ensite. Вместо това, вие ръчно създавате символната връзка:
sudo ln -s /etc/nginx/sites-available/test.oo.md /etc/nginx/sites-enabled/Това свързва конфигурационния файл в директорията sites-enabled, което го прави подходящ да бъде зареден от NGINX.
3. Тестирайте конфигурацията на NGINX
Винаги тестирайте вашата конфигурация на NGINX преди преоразмеряване:
sudo nginx -tУспешният тест връща:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulАко има съобщени грешки, преглед на указаните редове в вашия конфигурационен файл и коригирайте ги преди да продължите.
4. Преоразмерете NGINX, за да приложите промените
sudo systemctl reload nginxКакто при Apache, reload грациозно прилага конфигурационни промени без прекъсване на активните връзки — винаги предпочитано над пълно restart в живи среди.
5. Деактивирайте сайт в NGINX
За да деактивирате сайт, премахнете неговата символна връзка от директорията sites-enabled:
sudo rm /etc/nginx/sites-enabled/test.oo.mdСлед това преоразмерете NGINX, за да приложите промяната:
sudo systemctl reload nginxКонфигурационният файл в sites-available е запазен и може да бъде преактивиран по всяко време.
Бързо справочник: Apache срещу NGINX управление на сайтове
| Задача | Apache команда | NGINX команда |
|---|---|---|
| Създаване на конфигурационен файл | nano /etc/apache2/sites-available/site.conf | nano /etc/nginx/sites-available/site |
| Активирайте сайта | sudo a2ensite site.conf | sudo ln -s /etc/nginx/sites-available/site /etc/nginx/sites-enabled/ |
| Тестирайте конфигурацията | sudo apachectl configtest | sudo nginx -t |
| Преоразмерете уеб сървъра | sudo systemctl reload apache2 | sudo systemctl reload nginx |
| Деактивирайте сайта | sudo a2dissite site.conf | sudo rm /etc/nginx/sites-enabled/site |
Най-добри практики за управление на сайтове с NGINX и Apache
1. Един конфигурационен файл на сайт
Винаги създавайте посветен конфигурационен файл за всеки домейн или поддомейн в директорията sites-available. Смесването на множество сайтове в един файл създава главоболия при поддръжката и прави отстраняването на неизправности значително по-трудно.
2. Винаги тестирайте преди преоразмеряване
Направете неотменяема навика да изпълнявате apachectl configtest или nginx -t преди всяко преоразмеряване. Синтаксна грешка в конфигурационен файл може да свали всички сайтове на сървъра — не само този, който редактирате.
3. Използвайте контрол на версиите за конфигурационни файлове
За сървъри, които хостват множество сайтове или сложни конфигурации, проследявайте вашите конфигурационни файлове с Git:
cd /etc/nginx/sites-available/
git init
git add .
git commit -m "Initial configuration snapshot"Това ви дава пълна история на промените и способността да се върнете към известно добро състояние мигновено.
4. Винаги налагайте HTTPS с SSL сертификати
Обслужването на сайтове по обикновен HTTP вече не е приемливо. Конфигурирайте SSL сертификати за всеки сайт, който управлявате. Let’s Encrypt предоставя безплатни, автоматично подновяващи се сертификати и се интегрира безпроблемно както с Apache (чрез mod_ssl и Certbot), така и с NGINX.
След получаване на сертификат, актуализирайте вашия блок на сървъра или виртуален хост, за да слуша на порт 443 и пренасочете целия HTTP трафик към HTTPS.
5. Конфигурирайте всеобхватно логване
Винаги определяйте както access_log, така и error_log директиви за всеки сайт. Логовете са вашата първа линия на защита при диагностициране на проблеми, разследване на инциденти със сигурност или анализ на модели на трафик. Съхранявайте логовете в файлове, специфични за сайта, вместо да разчитате на глобалния лог по подразбиране.
