Як змусити сервер 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 слухати на декількох портах, ви можете додати кілька директив прослуховування в серверному блоці. Ось приклад серверного блоку, що прослуховує порти 80 і 8080:

server {
listen 80;
listen 8080;
ім'я_сервера example.com;
root /var/www/html;
індекс 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), ви можете налаштувати його таким чином:

server {
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.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

Або, якщо ваша система використовує service:

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 {
слухати 80;
ім'я_сервера example.com;
root /var/www/html80;
index index.html;location / {
try_files $uri $uri/ =404;
}
}

server {
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