Как да конфигурирате виртуални хостове в Nginx в Ubuntu
Конфигурирането на виртуални хостове в Nginx ви позволява да хоствате няколко уебсайта на един сървър, като всеки уебсайт има собствено име на домейн. Виртуалните хостове в Nginx се конфигурират с помощта на “блокове на сървъра”, които определят настройките за всеки уебсайт. Това ръководство ще ви запознае с конфигурирането на виртуални хостове на сървър Ubuntu с Nginx.
1. Предварителни условия
- Инсталиран Nginx: Уверете се, че Nginx е инсталиран на вашия сървър. Ако не, инсталирайте го с:
sudo apt update
sudo 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/www
3. Създаване на примерно съдържание
За да тествате виртуалните хостове, добавете примерни HTML файлове за всеки сайт.
Example1.com:
echo "<h1>Welcome to Example1.com!</h1>" | sudo tee /var/www/example1.com/html/index.html
Example2.com:
echo "<h1>Welcome to Example2.com!</h1>" | sudo tee /var/www/example2.com/html/index.html
4. Създаване на конфигурационни файлове за виртуален хост
Сега ще създадем конфигурационен файл за сървърен блок (виртуален хост) за всеки уебсайт. 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 nginx
8. Достъп до уебсайтовете
Ако имената на домейни са насочени към вашия сървър, сега трябва да можете да получите достъп до всеки сайт, като посетите:
- 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 отличен избор за хостване на множество сайтове на един и същ сървър.