Навіщо розміщувати кілька вебсайтів на виділеному сервері?
Виділені сервери надають ексклюзивний доступ до всіх своїх ресурсів — CPU, RAM, сховища та пропускної здатності мережі. Це різко контрастує зі спільним хостингом, де ресурси розподіляються між багатьма користувачами, або навіть VPS, який, хоча й пропонує більшу ізоляцію, все ще віртуалізує апаратне забезпечення. Для бізнесу, розробників та системних адміністраторів виділений сервер від Valebyte пропонує:
- Неперевершена продуктивність: Відсутність "шумних сусідів", які конкурують за ресурси, означає стабільну, високошвидкісну продуктивність для всіх ваших сайтів. Ідеально підходить для вебдодатків з високим трафіком, інтернет-магазинів та сервісів, що інтенсивно використовують дані.
- Покращена безпека: Повний контроль над середовищем вашого сервера дозволяє налаштовувати конфігурації безпеки, брандмауери та моніторинг відповідно до ваших конкретних потреб, зменшуючи ризики вразливості.
- Повний контроль та гнучкість: Встановлюйте будь-яке програмне забезпечення, налаштовуйте будь-які параметри та оптимізуйте своє середовище саме так, як вам потрібно. Це критично важливо для складних налаштувань, таких як власні вебдодатки, CI/CD конвеєри або спеціалізовані ігрові сервери, які також можуть вимагати вебінтерфейсів.
- Ефективність витрат: Для зростаючого портфоліо вебсайтів або додатків консолідація їх на одному потужному виділеному сервері може бути більш економічно вигідною, ніж керування кількома меншими тарифними планами хостингу.
- Масштабованість: Легко оновлюйте апаратні компоненти або додавайте більше виділених серверів у міру зростання ваших потреб, забезпечуючи зростання вашої інфраструктури разом з вашим бізнесом.
Незалежно від того, чи керуєте ви набором бізнес-вебсайтів, керуєте клієнтськими проєктами, розміщуєте популярний ігровий сервер з веб-інтерфейсом або розробляєте кілька додатків, виділений сервер з Nginx є чудовим вибором для ефективного використання ресурсів.
Передумови та вимоги до сервера
Перш ніж ми почнемо налаштовувати Nginx, переконайтеся, що у вас є наступне:
- Виділений сервер Valebyte: З root або sudo доступом.
- Операційна система: Дистрибутив Linux (наприклад, Ubuntu 22.04 LTS, Debian 11, CentOS 8 Stream). Цей посібник використовуватиме приклади Ubuntu 22.04 LTS, але команди значною мірою схожі для інших систем на базі Debian.
- Встановлений Nginx: Якщо Nginx ще не встановлено, ми розглянемо його встановлення.
- Зареєстровані доменні імена: Вам знадобиться щонайменше два доменних імені (наприклад,
example1.comтаexample2.com), які ви бажаєте розмістити. - Конфігурація DNS: Записи A для ваших доменних імен (наприклад,
example1.com,www.example1.com,example2.com,www.example2.com) повинні вказувати на публічну IP-адресу вашого виділеного сервера. Зміни DNS можуть зайняти кілька годин для глобального поширення. - Базове знайомство з командним рядком: Впевнене використання SSH та базових команд Linux.
Покроковий посібник: Налаштування кількох вебсайтів за допомогою Nginx
Крок 1: Підключіться до свого сервера та оновіть систему
Спочатку підключіться до свого виділеного сервера Valebyte через SSH:
ssh username@your_server_ip
Після входу оновіть список пакетів вашої системи та оновіть усі наявні пакети, щоб переконатися, що у вас є останні виправлення безпеки та програмне забезпечення:
sudo apt update
sudo apt upgrade -y
Крок 2: Встановіть Nginx (якщо ще не встановлено)
Якщо Nginx ще не встановлено на вашому сервері, встановіть його:
sudo apt install nginx -y
Після встановлення Nginx повинен запуститися автоматично. Ви можете перевірити його статус:
sudo systemctl status nginx
Ви повинні побачити вивід, що вказує на те, що Nginx є active (running). Якщо ні, запустіть та увімкніть його:
sudo systemctl start nginx
sudo systemctl enable nginx
Переконайтеся, що ваш брандмауер (наприклад, UFW) дозволяє трафік HTTP (порт 80) та HTTPS (порт 443):
sudo ufw allow 'Nginx HTTP'
sudo ufw allow 'Nginx HTTPS'
sudo ufw enable
Крок 3: Створіть кореневі каталоги документів для кожного вебсайту
Nginx обслуговує файли з певних каталогів, відомих як кореневі каталоги документів. Рекомендується створювати окремий каталог для кожного вебсайту. Ми будемо використовувати /var/www/ як базовий каталог.
Давайте створимо каталоги для двох прикладів вебсайтів: example1.com та example2.com. Замініть їх на ваші фактичні доменні імена.
sudo mkdir -p /var/www/example1.com/html
sudo mkdir -p /var/www/example2.com/html
Призначте право власності на ці каталоги користувачу та групі www-data, які Nginx використовує для обслуговування файлів. Це гарантує, що Nginx має необхідні дозволи.
sudo chown -R www-data:www-data /var/www/example1.com
sudo chown -R www-data:www-data /var/www/example2.com
Встановіть відповідні дозволи для каталогів:
sudo chmod -R 755 /var/www/example1.com
sudo chmod -R 755 /var/www/example2.com
Крок 4: Створіть зразки індексних файлів для тестування
Щоб легко перевірити, чи кожен вебсайт обслуговується правильно, створіть простий файл index.html у кожному кореневому каталозі документа.
Для example1.com:
echo "<!DOCTYPE html><html><head><title>Welcome to Example 1</title></head><body><h1>Hello from Example 1!</h1><p>This is the first website on your Valebyte dedicated server.</p></body></html>" | sudo tee /var/www/example1.com/html/index.html
Для example2.com:
echo "<!DOCTYPE html><html><head><title>Welcome to Example 2</title></head><body><h1>Greetings from Example 2!</h1><p>This is the second website on your Valebyte dedicated server.</p></body></html>" | sudo tee /var/www/example2.com/html/index.html
Крок 5: Налаштуйте блоки сервера Nginx (віртуальні хости)
Nginx використовує "блоки сервера" (подібні до віртуальних хостів Apache) для визначення конфігурацій для окремих вебсайтів. Ці файли зазвичай зберігаються в /etc/nginx/sites-available/, а потім символічно пов'язуються з /etc/nginx/sites-enabled/ для їх активації.
Створіть конфігурацію для example1.com
Відкрийте новий файл для example1.com за допомогою текстового редактора, такого як Nano:
sudo nano /etc/nginx/sites-available/example1.com.conf
Вставте наступну конфігурацію, замінивши example1.com на ваше доменне ім'я:
server {
listen 80;
listen [::]:80;
root /var/www/example1.com/html;
index index.html index.htm index.nginx-debian.html;
server_name example1.com www.example1.com;
location / {
try_files $uri $uri/ =404;
}
error_log /var/log/nginx/example1.com_error.log;
access_log /var/log/nginx/example1.com_access.log;
}
Пояснення директив:
listen 80;таlisten [::]:80;: Nginx прослуховує вхідні з'єднання на порту 80 як для IPv4, так і для IPv6.root /var/www/example1.com/html;: Вказує кореневий каталог документа для цього вебсайту.index index.html ...;: Визначає порядок, у якому Nginx шукає індексні файли.server_name example1.com www.example1.com;: Вказує Nginx, на які доменні імена повинен відповідати цей блок сервера. Критично важливо для розміщення кількох сайтів.location / { ... }: Визначає, як Nginx обробляє запити на файли, які не знайдено безпосередньо.try_filesнамагається обслужити запитуваний URI, потім URI як каталог, і нарешті повертає помилку 404.error_logтаaccess_log: Власні файли журналів для кожного сайту, що полегшує усунення несправностей та моніторинг.
Збережіть та закрийте файл (Ctrl+X, Y, Enter у Nano).
Створіть конфігурацію для example2.com
Повторіть процес для вашого другого домену:
sudo nano /etc/nginx/sites-available/example2.com.conf
Вставте конфігурацію, налаштувавши її для example2.com:
server {
listen 80;
listen [::]:80;
root /var/www/example2.com/html;
index index.html index.htm index.nginx-debian.html;
server_name example2.com www.example2.com;
location / {
try_files $uri $uri/ =404;
}
error_log /var/log/nginx/example2.com_error.log;
access_log /var/log/nginx/example2.com_access.log;
}
Збережіть та закрийте файл.
Крок 6: Увімкніть блоки сервера та перезапустіть Nginx
Щоб активувати ваші нові блоки сервера, створіть символічні посилання з sites-available на sites-enabled:
sudo ln -s /etc/nginx/sites-available/example1.com.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/example2.com.conf /etc/nginx/sites-enabled/
Часто корисно видалити стандартний блок сервера Nginx, щоб уникнути конфліктів або обслуговування небажаного вмісту:
sudo rm /etc/nginx/sites-enabled/default
Перед перезапуском 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
Якщо помилок немає, перезапустіть Nginx, щоб застосувати зміни:
sudo systemctl restart nginx
Крок 7: Налаштуйте записи DNS
Цей крок є вирішальним і повинен бути виконаний через вашого реєстратора доменів або службу керування DNS. Для кожного домену (example1.com та example2.com) вам потрібно створити або змінити наступні записи A:
- Запис A для кореневого домену (наприклад,
example1.com), що вказує на IP-адресу вашого виділеного сервера. - Запис A для субдомену
www(наприклад,www.example1.com), що також вказує на IP-адресу вашого виділеного сервера.
Зміни DNS можуть зайняти від кількох хвилин до 48 годин для повного поширення в Інтернеті. Ви можете використовувати онлайн-інструменти, такі як DNS Checker, для моніторингу поширення.
Крок 8: Протестуйте свої вебсайти
Після завершення поширення DNS відкрийте свій веббраузер і перейдіть на http://example1.com та http://example2.com. Ви повинні побачити відповідні повідомлення "Hello from Example 1!" та "Greetings from Example 2!".
Ви також можете протестувати з командного рядка вашого сервера за допомогою curl, явно встановивши заголовок Host для імітації запиту браузера:
curl -H "Host: example1.com" http://localhost
curl -H "Host: example2.com" http://localhost
Або, після поширення DNS:
curl http://example1.com
curl http://example2.com
Need a dedicated server?
Compare prices from top providers. Configure and order in minutes.
Розширені міркування щодо хостингу на виділеному сервері
SSL/TLS з Let's Encrypt
Для безпечного зв'язку всі сучасні вебсайти повинні використовувати HTTPS. Let's Encrypt надає безкоштовні сертифікати SSL/TLS, а Certbot автоматизує процес. Встановіть Certbot для Nginx:
sudo apt install certbot python3-certbot-nginx -y
Потім запитайте та налаштуйте сертифікати для ваших доменів:
sudo certbot --nginx -d example1.com -d www.example1.com -d example2.com -d www.example2.com
Certbot проведе вас через процес, змінить ваші конфігурації Nginx та налаштує автоматичне поновлення.
Інтеграція з PHP-FPM
Якщо ваші вебсайти працюють на PHP-додатках (таких як WordPress, Laravel тощо), вам знадобиться PHP-FPM (FastCGI Process Manager). Встановіть його разом із поширеними розширеннями PHP:
sudo apt install php-fpm php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip -y
Потім змініть блок сервера Nginx, щоб передавати PHP-запити до PHP-FPM. Додайте блок location ~ \.php$:
server {
# ... інші директиви ...
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock; # Налаштуйте версію PHP, якщо вона відрізняється
}
# ... інші директиви ...
}
Не забудьте перезапустити Nginx та PHP-FPM після змін:
sudo systemctl restart php8.1-fpm
sudo systemctl restart nginx
Найкращі практики безпеки
- Брандмауер (UFW): Тримайте відкритими лише необхідні порти (22 для SSH, 80 для HTTP, 443 для HTTPS).
- Регулярні оновлення: Підтримуйте свою ОС та Nginx в актуальному стані.
- Надійні паролі/ключі SSH: Використовуйте надійні, унікальні паролі та ключі SSH для доступу до сервера.
- Обмеження швидкості (Rate Limiting): Використовуйте модуль
limit_reqNginx для захисту від DDoS-атак для сайтів з високим трафіком. - Fail2Ban: Встановіть Fail2Ban для автоматичного блокування IP-адрес з надто великою кількістю невдалих спроб входу.
Моніторинг та ведення журналів
Виділені сервери надають повний доступ до журналів. Регулярно перевіряйте журнали доступу та помилок Nginx (наприклад, /var/log/nginx/example1.com_access.log та /var/log/nginx/example1.com_error.log) для отримання інформації про трафік та проблеми. Розгляньте інструменти, такі як Logrotate, для керування розмірами файлів журналів та Prometheus/Grafana для розширеного моніторингу.
Усунення поширених проблем
Навіть при ретельному налаштуванні можуть виникнути проблеми. Ось поширені проблеми та їх вирішення:
1. Синтаксичні помилки конфігурації Nginx
Симптом: Nginx не вдається перезапустити, або nginx -t повідомляє про помилки.
Рішення: Команда nginx -t — ваш найкращий друг. Вона точно вкаже файл та номер рядка синтаксичної помилки. Уважно перегляньте вказаний рядок на наявність друкарських помилок, відсутніх крапок з комою, неправильних директив або незакритих дужок.
2. Вебсайти не завантажуються або показують стандартну сторінку Nginx
Симптом: Браузер показує помилку 404, загальну вітальну сторінку Nginx або інший вебсайт, ніж очікувалося. Рішення:
- Поширення DNS: Перевірте, чи записи A вашого домену правильно вказують на IP-адресу вашого виділеного сервера. Використовуйте
dig example1.comабо онлайн-перевірки DNS. - Невідповідність імені сервера: Двічі перевірте директиву
server_nameу вашій конфігурації Nginx. Вона повинна точно відповідати запитуваним доменним іменам. - Символічні посилання: Переконайтеся, що символічні посилання в
/etc/nginx/sites-enabled/правильно вказують на ваші файли конфігурації в/etc/nginx/sites-available/. - Стандартний блок сервера: Якщо ви бачите стандартну сторінку Nginx, можливо, ви не видалили або неправильно налаштували стандартний блок сервера (
/etc/nginx/sites-enabled/default). - Перезапуск Nginx: Завжди перезапускайте Nginx після внесення змін до конфігурації (
sudo systemctl restart nginx).
3. Проблеми з дозволами (403 Forbidden)
Симптом: Браузер показує помилку '403 Forbidden'.
Рішення: Це зазвичай означає, що Nginx не має дозволу на читання файлів або каталогів. Переконайтеся, що кореневий каталог документа та його вміст належать www-data:www-data та мають відповідні дозволи на читання (наприклад, sudo chown -R www-data:www-data /var/www/example1.com та sudo chmod -R 755 /var/www/example1.com).
4. Конфлікти портів
Симптом: Nginx не вдається запустити, або журнали вказують на 'address already in use'.
Рішення: Інша служба може прослуховувати порт 80 або 443. Перевірте наявність інших вебсерверів (таких як Apache) або служб. Використовуйте sudo netstat -tulpn | grep :80, щоб ідентифікувати конфліктуючий процес і або зупинити його, або змінити його порт.
5. Журнали Nginx
Симптом: Незрозуміло, в чому проблема.
Рішення: Завжди перевіряйте журнали помилок Nginx. Для глобальних помилок дивіться /var/log/nginx/error.log. Для конкретних проблем вебсайту перевіряйте власні журнали помилок, які ви визначили (наприклад, /var/log/nginx/example1.com_access.log та /var/log/nginx/example1.com_error.log). Ці журнали надають безцінні підказки про те, що йде не так.
sudo tail -f /var/log/nginx/example1.com_error.log
Ця команда відобразить останні кілька рядків журналу та продовжуватиме показувати нові записи, що з'являються, що корисно для налагодження в реальному часі.
Систематично перевіряючи ці пункти, ви зможете вирішити більшість поширених проблем при налаштуванні кількох вебсайтів на вашому виділеному сервері з Nginx.