Как да конфигурирате виртуални хостове в Nginx в Ubuntu
Конфигурирането на виртуални хостове в Nginx ви позволява да хоствате няколко уебсайта на един сървър, като всеки уебсайт има собствено име на домейн. Виртуалните хостове в Nginx се конфигурират с помощта на “блокове на сървъра”, които определят настройките за всеки уебсайт. Това ръководство ще ви запознае с конфигурирането на виртуални хостове на сървър Ubuntu с Nginx.
1. Предварителни условия
- Инсталиран Nginx: Уверете се, че Nginx е инсталиран на вашия сървър. Ако не, инсталирайте го с:
sudo apt updatesudo apt install nginx - Имена на домейни: Имената на домейни, които искате да хоствате, трябва да бъдат насочени към IP адреса на вашия сървър. Можете да промените файла /etc/hosts за целите на тестването.
2. Създаване на директории за всеки уебсайт
Всеки уебсайт трябва да има собствена директория за съхранение на файловете на сайта. Нека създадем директории за два примерни уебсайта – example1.com и example2.com.
sudo mkdir -p /var/www/example1.com/html sudo mkdir -p /var/www/example2.com/htmlПредоставете правото на собственост върху тези директории на потребителя Nginx (www-data), за да се уверите, че Nginx има необходимите разрешения.
sudo chown -R www-data:www-data /var/www/example1.com/html sudo chown -R www-data:www-data /var/www/example2.com/htmlЗадайте подходящи разрешения:
sudo chmod -R 755 /var/www3. Създаване на примерно съдържание
За да тествате виртуалните хостове, добавете примерни HTML файлове за всеки сайт.
Example1.com:
echo "<h1>Welcome to Example1.com!</h1>" | sudo tee /var/www/example1.com/html/index.htmlExample2.com:
echo "<h1>Welcome to Example2.com!</h1>" | sudo tee /var/www/example2.com/html/index.html4. Създаване на конфигурационни файлове за виртуален хост
Сега ще създадем конфигурационен файл за сървърен блок (виртуален хост) за всеки уебсайт. Nginx съхранява тези конфигурационни файлове в директорията /etc/nginx/sites-available/.
Стъпка 1: Създаване на конфигурация за Example1.com
Създайте нов конфигурационен файл за example1.com:
sudo nano /etc/nginx/sites-available/example1.comДобавете следната конфигурация:
server {
listen 80;
server_name example1.com www.example1.com;
root /var/www/example1.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}Стъпка 2: Създаване на конфигурация за Example2.com
Създайте конфигурационен файл за example2.com:
sudo nano /etc/nginx/sites-available/example2.comДобавете следната конфигурация:
server {
listen 80;
server_name example2.com www.example2.com;
root /var/www/example2.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}5. Активиране на виртуалните хостове
Nginx използва символни връзки, за да активира виртуалните хостове. Свържете конфигурационните файлове от sites-available към sites-enabled:
sudo ln -s /etc/nginx/sites-available/example1.com /etc/nginx/sites-enabled/ sudo ln -s /etc/nginx/sites-available/example2.com /etc/nginx/sites-enabled/6. Тестване на конфигурацията
За да се уверите, че в конфигурацията ви няма грешки в синтаксиса, изпълнете:
sudo nginx -tАко всичко е правилно, ще видите съобщение за потвърждение. Ако има грешки, Nginx ще покаже подробна информация, за да ви помогне да отстраните проблемите.
7. Рестартирайте Nginx
След като потвърдите конфигурацията, рестартирайте Nginx, за да приложите промените:
sudo systemctl restart nginx8. Достъп до уебсайтовете
Ако имената на домейни са насочени към вашия сървър, сега трябва да можете да получите достъп до всеки сайт, като посетите:
- http://example1.com
- http://example2.com
За локално тестване можете да редактирате файла /etc/hosts, за да съпоставите имената на домейни с IP адреса на вашия сървър. Добавете записи като:
127.0.0.1 example1.com 127.0.0.1 example2.comЗапазете и затворете файла, след което опитайте да получите достъп до сайтовете в браузъра си.
9. Включване на HTTPS за всеки сайт (по избор)
За сигурни връзки можете да настроите SSL сертификати, като използвате Let’s Encrypt. За да активирате HTTPS:
Инсталирайте certbot:
sudo apt install certbot python3-certbot-nginxИзпълнете следната команда, за да получите и конфигурирате SSL сертификати за всеки домейн:
sudo certbot --nginx -d example1.com -d www.example1.com sudo certbot --nginx -d example2.com -d www.example2.comСледвайте указанията и Certbot автоматично ще създаде HTTPS в конфигурацията на Nginx.
Заключение
Чрез създаването на виртуални хостове в Nginx в Ubuntu можете да хоствате множество уебсайтове на един сървър, всеки със собствена конфигурация и съдържание. Тази конфигурация е ефективна и мащабируема, което прави Nginx отличен избор за хостване на множество сайтове на един и същ сървър.


