Як змусити сервер 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 коректно прослуховує декілька портів:
- Перевірте порти для прослуховування: Використовуйте 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 {
слухати 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 і протестувати кожен порт, щоб переконатися, що все працює належним чином.