Как заставить сервер Nginx слушать несколько портов ⋆ ALexHost SRL

Проверьте свои навыки на всех наших услугах хостинга и получите скидку 15%!.

Используйте код при регистрации:

Skills
10.12.2024

Как заставить сервер Nginx слушать несколько портов

Nginx – это универсальный веб-сервер и обратный прокси-сервер, который можно настроить на прослушивание нескольких портов, что делает его подходящим для обслуживания различных веб-сайтов, приложений или сервисов с одного сервера. Настройка Nginx на прослушивание нескольких портов может быть полезна для обслуживания различного контента на разных портах или для поддержки таких сервисов, как HTTP (порт 80) и HTTPS (порт 443). В этом руководстве вы узнаете, как настроить Nginx на прослушивание нескольких портов.

Необходимые условия

  • Сервер с установленным и запущенным Nginx.
  • Доступ Root или sudo для изменения конфигурационных файлов Nginx.
  • Базовое понимание конфигурационных файлов Nginx (nginx.conf и файлы конфигурации конкретного сайта).

Обзор базовой конфигурации Nginx

Конфигурационные файлы Nginx обычно находятся по адресу /etc/nginx/nginx.conf или в /etc/nginx/sites-available/ для конкретных конфигураций сайтов, в зависимости от дистрибутива Linux. Основной директивой для прослушивания порта является listen, которая указывает IP-адрес и порт, который должен прослушивать Nginx.

Шаг 1: Откройте файл конфигурации Nginx

Чтобы настроить Nginx на прослушивание нескольких портов, необходимо отредактировать файл конфигурации Nginx. Откройте файл с помощью удобного текстового редактора:

sudo nano /etc/nginx/nginx.conf

Или, если вы редактируете конфигурацию конкретного сайта:

sudo nano /etc/nginx/sites-available/example.conf

Шаг 2: Добавьте несколько директив прослушивания

Чтобы заставить Nginx слушать несколько портов, вы можете добавить несколько директив listen в серверный блок. Вот пример серверного блока, прослушивающего порты 80 и 8080:

server {
слушать 80;
listen 8080;
имя_сервера example.com;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}

В этой конфигурации:

  • listen 80; указывает Nginx слушать HTTP-запросы на порту 80.
  • listen 8080; указывает Nginx прослушивать HTTP-запросы на порту 8080.

Это означает, что запросы, поступающие на http://example.com:80 и http://example.com:8080, будут обрабатываться этим серверным блоком.

Шаг 3: Настройка HTTPS с несколькими портами

Если вы хотите включить HTTPS на другом порту (например, 8443), вы можете настроить его следующим образом:

сервер {
listen 443 ssl;
listen 8443 ssl;
имя_сервера example.com;
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}

В этой конфигурации:

  • listen 443 ssl; заставляет Nginx прослушивать HTTPS-запросы на стандартном порту 443.
  • listen 8443 ssl; заставляет Nginx прослушивать HTTPS-запросы на порту 8443.
  • Пути сертификата и ключа SSL (ssl_certificate и ssl_certificate_key) используются для включения HTTPS.

Шаг 4: Проверка конфигурации

После внесения изменений очень важно проверить конфигурацию Nginx на наличие синтаксических ошибок, прежде чем применять изменения. Выполните:

sudo nginx -t

Если в выводе указано, что синтаксис в порядке, значит, конфигурация верна.

Шаг 5: Перезапустите Nginx

Чтобы применить изменения, перезапустите Nginx:

sudo systemctl restart nginx

Или, если в вашей системе используется сервис:

sudo service nginx restart

Шаг 6: Тестирование конфигурации

Чтобы убедиться, что Nginx правильно прослушивает несколько портов:

  1. Проверьте прослушиваемые порты: Используйте netstat или ss, чтобы убедиться, что Nginx прослушивает указанные порты:
    sudo netstat -tuln | grep nginx

    или:
    sudo ss -tuln | grep nginx

    Это выведет список портов, которые прослушивает Nginx. Вы должны увидеть записи для портов 80, 8080, 443 и 8443.
  2. Получите доступ к серверу: Откройте веб-браузер и попробуйте получить доступ к серверу через разные порты:
    • http://example.com
    • http://example.com:8080
    • https://example.com
    • https://example.com:8443

    Если конфигурация была выполнена правильно, вы увидите, что обслуживается тот же контент.

Дополнительно: Настройка разного содержимого для разных портов

Вы можете настроить обслуживание разного содержимого в зависимости от порта. Например, обслуживать разные корневые каталоги для каждого порта:

server {
listen 80;
имя_сервера example.com;
root /var/www/html80;
index index.html;location / {
try_files $uri $uri/ =404;
}
}

сервер {
listen 8080;
имя_сервера example.com;
root /var/www/html8080;
index index.html;location / {
try_files $uri $uri/ =404;
}
}

В этом примере:

  • Запросы к http://example.com (порт 80) будут обслуживать содержимое из /var/www/html80.
  • Запросы на http://example.com:8080 будут обслуживать содержимое /var/www/html8080.

Заключение

Настройка Nginx на прослушивание нескольких портов позволяет вам обслуживать различные сервисы, поддерживать пользовательские настройки или обеспечивать гибкость сетевой архитектуры. Если вам нужно, чтобы Nginx работал с несколькими портами HTTP и HTTPS или направлял разные порты на разный контент, директива listen в Nginx позволяет легко настроить его. Только не забудьте проверить конфигурацию, перезапустить Nginx и протестировать каждый порт, чтобы убедиться, что все работает как надо.

Проверьте свои навыки на всех наших услугах хостинга и получите скидку 15%!.

Используйте код при регистрации:

Skills