Как заставить сервер 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 правильно прослушивает несколько портов:
- Проверьте прослушиваемые порты: Используйте netstat или ss, чтобы убедиться, что Nginx прослушивает указанные порты:
sudo netstat -tuln | grep nginx
или:sudo ss -tuln | grep nginx
Это выведет список портов, которые прослушивает Nginx. Вы должны увидеть записи для портов 80, 8080, 443 и 8443. - Получите доступ к серверу: Откройте веб-браузер и попробуйте получить доступ к серверу через разные порты:
- 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 и протестировать каждый порт, чтобы убедиться, что все работает как надо.