Как да накарате сървъра 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:
сървър {
listen 80;
listen 8080;
server_name example.com;
root /var/www/html;
index index.html;
местоположение / {
try_files $uri $uri/ =404;
}
}
В тази конфигурация:
- слушай 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;
server_name 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;
местоположение / {
try_files $uri $uri/ =404;
}
}
В тази конфигурация:
- слушай 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
Ако конфигурацията е извършена правилно, трябва да видите същото съдържание, което се сервира.
Разширено: Задаване на различно съдържание за различни портове
Можете да конфигурирате различно съдържание, което да се обслужва въз основа на порта. Например да се обслужват различни коренови директории за всеки порт:
сървър {
слушайте 80;
server_name example.com;
root /var/www/html80;
index index.html;location / {
try_files $uri $uri/ =404;
}
}
сървър {
слушайте 8080;
server_name 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 портове или да насочва различни портове към различно съдържание, директивата за слушане на Nginx улеснява настройката. Просто не забравяйте да проверите конфигурациите си, да рестартирате Nginx и да тествате всеки порт, за да се уверите, че всичко работи според очакванията.