Администрирование и настройка NGINX. Как управлять множеством сайтов с помощью nginx
NGINX является одним из самых популярных веб-серверов и прокси-серверов, который предлагает эффективное и гибкое решение для обработки HTTP-запросов и управления трафиком. Одной из ключевых возможностей NGINX является его способность обслуживать несколько сайтов на одном сервере, что делает его идеальным выбором для хостинг-провайдеров, веб-разработчиков и системных администраторов.
- Установка и базовая настройка NGINX: Первый шаг в управлении множеством сайтов с помощью NGINX — это установка и базовая настройка сервера. Для большинства операционных систем существуют предварительно скомпилированные пакеты, которые можно установить с помощью стандартных инструментов управления пакетами, таких как apt, yum или zypper. После установки вы можете настроить основные параметры, такие как порт прослушивания и конфигурационные файлы.
- Создание конфигурационного файла для каждого сайта: NGINX использует конфигурационные файлы для определения, как обрабатывать входящие запросы для каждого сайта. Хорошей практикой является создание отдельного конфигурационного файла для каждого сайта, чтобы обеспечить чистоту и структуру вашей конфигурации. Обычно эти файлы размещаются в директории
/etc/nginx/conf.d/
или/etc/nginx/sites-available/
. - Настройка виртуальных хостов: Для каждого сайта, который вы хотите разместить на сервере, вам необходимо настроить виртуальный хост. Виртуальные хосты позволяют NGINX обслуживать разные сайты на одном сервере, и каждый сайт имеет свои уникальные параметры и настройки. В конфигурационном файле для каждого сайта вы должны указать серверное имя (например,
server_name example.com;
) и путь к директории, в которой находятся файлы сайта. - Управление трафиком с помощью проксирования: NGINX также может использоваться в качестве прокси-сервера для перенаправления трафика на другие серверы или приложения. Это полезно, когда у вас есть разные серверы для обработки статического и динамического контента. Вы можете настроить NGINX так, чтобы он перенаправлял запросы к соответствующим серверам на основе URL-пути или других условий.
- Обеспечение безопасности и производительности: Помимо обслуживания множества сайтов, NGINX также предлагает ряд функций для обеспечения безопасности и оптимизации производительности. Вы можете настроить SSL-шифрование, использовать фильтры запросов для защиты от злонамеренного трафика, настроить кэширование и сжатие для повышения скорости загрузки страниц и многое другое.
Заключение: NGINX предоставляет мощные возможности для управления множеством сайтов на одном сервере. С помощью правильной настройки виртуальных хостов и конфигурационных файлов вы можете эффективно размещать и обслуживать несколько веб-сайтов. Кроме того, NGINX предлагает множество дополнительных функций для повышения безопасности и производительности вашего сервера. Путем освоения и мастерства в администрировании и настройке NGINX вы сможете стать более эффективным и продуктивным системным администратором.
Конфигурация NGINX для двух доменов, где первый сайт работает на Python, а второй на WordPress PHP
Шаг 1: Установка NGINX Перед настройкой NGINX убедитесь, что он установлен на вашем VPS хостинге. Для большинства операционных систем можно использовать команду установки пакетов, например, для Ubuntu:
sudo apt update sudo apt install nginx
Шаг 2: Создание конфигурационных файлов Перейдите в директорию /etc/nginx/conf.d/
и создайте два конфигурационных файла: mywebsite.conf
и wordpress.conf
.
cd /etc/nginx/conf.d/ sudo nano mywebsite.conf
Вставьте следующий код в файл mywebsite.conf
:
server { listen 80; server_name mywebsite.ru; location / { proxy_pass http://localhost:8000; # Перенаправляем запросы на Python приложение proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
Сохраните и закройте файл (Ctrl + X
, затем Y
, затем Enter
).
sudo nano wordpress.conf
Вставьте следующий код в файл wordpress.conf
:
server { listen 80; server_name secondwebsite.com www.secondwebsite.com; root /var/www/wordpress; # Путь к директории WordPress index index.php; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; # Версия PHP может отличаться } location ~ /\.ht { deny all; } }
Сохраните и закройте файл.
Шаг 3: Настройка директорий и разрешений Убедитесь, что у вас есть соответствующие директории для каждого сайта.
sudo mkdir /var/www/mywebsite sudo mkdir /var/www/wordpress
Для сайта на Python также убедитесь, что ваше приложение Python развернуто и запущено на порту 8000. Обычно это делается с помощью WSGI-сервера, такого как Gunicorn.
sudo pip install gunicorn cd /var/www/mywebsite sudo gunicorn app:app
Шаг 4: Перезапуск NGINX После завершения настроек перезапустите NGINX для применения изменений:
sudo service nginx restart
Теперь ваш первый сайт mywebsite.ru
должен быть доступен по указанному домену, и запросы будут перенаправляться на ваше Python приложение. Второй сайт secondwebsite.com
будет работать на WordPress PHP.
Обратите внимание, что приведенные настройки предполагают, что ваш Python код и установка WordPress уже находятся в соответствующих директориях /var/www/mywebsite
и /var/www/wordpress
. Если у вас есть отличные требования или другие настройки, вам может потребоваться внести соответствующие изменения в конфигурационные файлы NGINX.
Шаги для настройки NGINX с использованием Docker и Docker Compose для двух доменов, где первый сайт работает на Python, а второй на WordPress PHP
Шаг 1: Установка Docker и Docker Compose Убедитесь, что Docker и Docker Compose установлены на вашем сервере. Вы можете следовать официальным инструкциям для вашей операционной системы.
Шаг 2: Создание директорий и файлов Создайте следующую структуру директорий:
- nginx-config/ - nginx.conf - sites/ - mywebsite.conf - wordpress.conf - docker-compose.yml
Шаг 3: Настройка конфигурации NGINX В директории nginx-config
создайте файл nginx.conf
и добавьте следующий код:
user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; # Включаем директории сайтов include /etc/nginx/sites/*.conf; }
Затем создайте директорию sites
и внутри нее создайте файлы конфигурации для каждого сайта.
Для сайта на Python (mywebsite.conf
):
upstream mywebsite { server mywebsite:8000; } server { listen 80; server_name mywebsite.ru; location / { proxy_pass http://mywebsite; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
Для сайта на WordPress PHP (wordpress.conf
):
server { listen 80; server_name secondwebsite.com www.secondwebsite.com; root /var/www/wordpress; index index.php; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { include fastcgi.conf; fastcgi_pass php:9000; } location ~ /\.ht { deny all; } }
Шаг 4: Настройка Docker Compose Откройте файл docker-compose.yml
и добавьте следующий код:
version: '3' services: nginx: image: nginx:latest ports: - 80:80 volumes: - ./nginx-config/nginx.conf:/etc/nginx/nginx.conf - ./nginx-config/sites:/etc/nginx/sites mywebsite: build: context: ./mywebsite restart: always wordpress: image: wordpress:latest ports: - 8080:80 volumes: - ./wordpress:/var/www/wordpress restart: always php: image: php:7.4-fpm volumes: - ./wordpress:/var/www/wordpress restart: always
Шаг 5: Создание директорий и файлов для каждого сайта Создайте директорию mywebsite
и поместите свое Python-приложение в эту директорию.
Также создайте директорию wordpress
и перенесите свой WordPress-сайт в эту директорию.
Шаг 6: Запуск NGINX с помощью Docker Compose Откройте терминал, перейдите в каталог, содержащий файл docker-compose.yml
, и выполните следующую команду:
docker-compose up -d
NGINX и связанные контейнеры будут созданы и запущены. Ваши сайты теперь должны быть доступны через соответствующие домены.
Шаг 7: Добавление нового сайта Чтобы добавить новый сайт, выполните следующие действия:
- Создайте новый файл конфигурации для сайта в директории
nginx-config/sites
. - Перезапустите контейнер NGINX с помощью команды
docker-compose restart nginx
.
Новый сайт будет добавлен без перезагрузки уже работающих сайтов.
Теперь у вас должна быть настроена конфигурация NGINX с использованием Docker и Docker Compose для двух доменов, где первый сайт работает на Python, а второй на WordPress PHP. Вы можете легко добавлять новые сайты, следуя инструкциям из шага 7, без остановки работы существующих сайтов.
Leave a Reply