Мастерство администрирования и настройки NGINX: Управление несколькими сайтами. Docker

Администрирование и настройка NGINX. Как управлять множеством сайтов с помощью nginx

NGINX является одним из самых популярных веб-серверов и прокси-серверов, который предлагает эффективное и гибкое решение для обработки HTTP-запросов и управления трафиком. Одной из ключевых возможностей NGINX является его способность обслуживать несколько сайтов на одном сервере, что делает его идеальным выбором для хостинг-провайдеров, веб-разработчиков и системных администраторов.

  1. Установка и базовая настройка NGINX: Первый шаг в управлении множеством сайтов с помощью NGINX — это установка и базовая настройка сервера. Для большинства операционных систем существуют предварительно скомпилированные пакеты, которые можно установить с помощью стандартных инструментов управления пакетами, таких как apt, yum или zypper. После установки вы можете настроить основные параметры, такие как порт прослушивания и конфигурационные файлы.
  2. Создание конфигурационного файла для каждого сайта: NGINX использует конфигурационные файлы для определения, как обрабатывать входящие запросы для каждого сайта. Хорошей практикой является создание отдельного конфигурационного файла для каждого сайта, чтобы обеспечить чистоту и структуру вашей конфигурации. Обычно эти файлы размещаются в директории /etc/nginx/conf.d/ или /etc/nginx/sites-available/.
  3. Настройка виртуальных хостов: Для каждого сайта, который вы хотите разместить на сервере, вам необходимо настроить виртуальный хост. Виртуальные хосты позволяют NGINX обслуживать разные сайты на одном сервере, и каждый сайт имеет свои уникальные параметры и настройки. В конфигурационном файле для каждого сайта вы должны указать серверное имя (например, server_name example.com;) и путь к директории, в которой находятся файлы сайта.
  4. Управление трафиком с помощью проксирования: NGINX также может использоваться в качестве прокси-сервера для перенаправления трафика на другие серверы или приложения. Это полезно, когда у вас есть разные серверы для обработки статического и динамического контента. Вы можете настроить NGINX так, чтобы он перенаправлял запросы к соответствующим серверам на основе URL-пути или других условий.
  5. Обеспечение безопасности и производительности: Помимо обслуживания множества сайтов, 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, без остановки работы существующих сайтов.

0 0 голоса
Рейтинг статьи
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x