Подключение к VDS по SSH: PuTTY, терминал и SSH-ключи
Пошаговое руководство по SSH-подключению к Linux VDS: PuTTY, терминал, аутентификация по ключу, правило фильтрации Path Panel и советы по безопасности.
Установка и настройка веб-серверов Nginx и Apache, сравнение возможностей, создание виртуальных хостов, настройка SSL/TLS и управление веб-сервисами в Linux.
Nginx и Apache — два наиболее широко используемых веб-сервера в мире. Оба могут обслуживать веб-приложения, статические файлы и работать как обратные прокси на Linux-серверах. В этом руководстве рассматривается установка, базовая настройка и создание виртуальных хостов для обоих серверов.
| Характеристика | Nginx | Apache |
|---|---|---|
| Архитектура | Асинхронная, event-driven | Процесс/поток |
| Статические файлы | Очень быстро | Медленнее |
| Динамический контент | Требует обратного прокси | Встроенные модули |
| Использование памяти | Низкое | Выше |
| Конфигурация | Проще | Поддержка .htaccess |
| Лучше для | Высоконагруженных сайтов | PHP-приложений |
Выбирайте Nginx для высоконагруженного статического контента или обратного прокси; выбирайте Apache для PHP-приложений (WordPress, Laravel). Их также можно использовать вместе: Nginx спереди как обратный прокси, Apache сзади как сервер приложений.
# Обновить список пакетов
sudo apt update
# Установить Nginx
sudo apt install nginx -y
# Запустить и включить сервис
sudo systemctl start nginx
sudo systemctl enable nginx
# Проверить статус
sudo systemctl status nginx
# Добавить репозиторий EPEL
sudo dnf install epel-release -y
# Установить Nginx
sudo dnf install nginx -y
# Запустить и включить сервис
sudo systemctl start nginx
sudo systemctl enable nginx
# Проверить конфигурацию
sudo nginx -t
# Перезагрузить конфигурацию (без простоя)
sudo systemctl reload nginx
# Перезапустить сервис
sudo systemctl restart nginx
# Показать версию Nginx
nginx -v
В Nginx для каждого сайта создаётся отдельный файл конфигурации в /etc/nginx/sites-available/.
# Создать файл конфигурации
sudo nano /etc/nginx/sites-available/example.com
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ =404;
}
# Для PHP-FPM
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}
# Блокировать доступ к скрытым файлам
location ~ /\.ht {
deny all;
}
# Лог-файлы
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
}
# Включить сайт
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
# Создать веб-директорию
sudo mkdir -p /var/www/example.com/html
sudo chown -R www-data:www-data /var/www/example.com
# Проверить и перезагрузить
sudo nginx -t && sudo systemctl reload nginx
server {
listen 80;
server_name app.example.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache_bypass $http_upgrade;
}
}
# Установить Apache
sudo apt update
sudo apt install apache2 -y
# Запустить и включить сервис
sudo systemctl start apache2
sudo systemctl enable apache2
# Проверить статус
sudo systemctl status apache2
# Установить Apache (httpd)
sudo dnf install httpd -y
# Запустить и включить сервис
sudo systemctl start httpd
sudo systemctl enable httpd
# Проверить конфигурацию
sudo apachectl configtest
# Перезагрузить конфигурацию
sudo systemctl reload apache2
# Включить модули
sudo a2enmod rewrite
sudo a2enmod ssl
# Включить/отключить сайты
sudo a2ensite example.com
sudo a2dissite 000-default
# Создать файл конфигурации
sudo nano /etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/html
<Directory /var/www/example.com/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</VirtualHost>
# Создать веб-директорию
sudo mkdir -p /var/www/example.com/html
sudo chown -R www-data:www-data /var/www/example.com
# Включить сайт
sudo a2ensite example.com.conf
# Проверить и перезагрузить
sudo apachectl configtest && sudo systemctl reload apache2
Используйте Certbot для бесплатного SSL-сертификата:
# Установить Certbot
sudo apt install certbot -y
# Для Nginx
sudo apt install python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com
# Для Apache
sudo apt install python3-certbot-apache -y
sudo certbot --apache -d example.com -d www.example.com
# Проверить автоматическое обновление
sudo certbot renew --dry-run
server {
listen 443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
root /var/www/example.com/html;
index index.html;
}
# Перенаправление HTTP на HTTPS
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
# Разрешить HTTP и HTTPS с ufw
sudo ufw allow 'Nginx Full'
# или
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Для Apache
sudo ufw allow 'Apache Full'
На серверах REXE не забудьте также открыть порты HTTP (80) и HTTPS (443) в брандмауэре Path Panel.
Nginx и Apache — мощные веб-серверы для разных сценариев использования. Nginx идеален для высокопроизводительного статического контента и обратного прокси, а Apache предпочтителен для PHP-приложений и конфигураций на основе .htaccess. С настройкой виртуальных хостов на любом из серверов можно размещать несколько доменов на одном сервере.
Nginx обеспечивает лучшую производительность для высоконагруженных сайтов, статического контента или обратного прокси. Apache проще настраивать для PHP-приложений, таких как WordPress и Laravel (с поддержкой .htaccess). Использование обоих вместе также возможно: Nginx спереди, Apache сзади.
Это делается с помощью настройки виртуальных хостов. В Nginx создайте отдельный файл в /etc/nginx/sites-available/ для каждого домена и добавьте символическую ссылку в sites-enabled. В Apache создайте .conf-файл в /etc/apache2/sites-available/ и включите его с помощью a2ensite.
Вы можете получить бесплатный SSL-сертификат с Let's Encrypt. Установите Certbot: 'sudo apt install certbot python3-certbot-nginx -y'. Затем выполните 'sudo certbot --nginx -d example.com' для автоматической установки и настройки сертификата. Сертификаты автоматически обновляются каждые 90 дней.
Команда 'sudo nginx -t' проверяет файлы конфигурации и показывает ошибки. Внимательно прочитайте сообщение об ошибке; обычно указывается имя файла и номер строки. Также можно проверить логи сервиса с помощью 'sudo journalctl -u nginx'.
Пошаговое руководство по SSH-подключению к Linux VDS: PuTTY, терминал, аутентификация по ключу, правило фильтрации Path Panel и советы по безопасности.
Пошаговое руководство по RDP-подключению к Windows Server VDS: настройка, безопасность NLA, правило фильтрации Path Panel и устранение неполадок.
Смена операционной системы VDS через панель REXE: советы по резервному копированию, поддерживаемые дистрибутивы Linux и версии Windows Server.