Изучение нескольких методов сопоставления портов Nginx с поддоменами

В веб-разработке субдомены — это мощный инструмент для управления различными разделами или сервисами веб-сайта. Nginx, популярный веб-сервер, позволяет сопоставлять определенные порты с поддоменами, что позволяет размещать несколько сервисов на одном сервере. В этой статье мы углубимся в различные методы достижения этой цели, предоставив попутно разговорные объяснения и примеры кода.

Метод 1: использование серверных блоков
Один из наиболее распространенных способов сопоставления портов Nginx с поддоменами — использование серверных блоков. Блоки серверов позволяют определить несколько виртуальных хостов, каждый со своей собственной конфигурацией.

Вот пример конфигурации блока сервера для сопоставления порта 8080 с поддоменом «app.example.com»:

server {
    listen 80;
    server_name app.example.com;
    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Метод 2: использование обратного прокси-сервера Nginx
Другой подход — использовать Nginx в качестве обратного прокси-сервера для пересылки запросов из поддомена на определенный порт. Этот метод особенно полезен, если вы хотите запустить несколько сервисов на разных портах Nginx.

Рассмотрим следующий пример, в котором мы сопоставляем порт 9000 с поддоменом «api.example.com»:

server {
    listen 80;
    server_name api.example.com;
    location / {
        proxy_pass http://localhost:9000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Метод 3: модуль Nginx Stream
Если вы имеете дело с трафиком, отличным от HTTP, например TCP или UDP, вы можете использовать модуль Nginx Stream. Этот модуль позволяет вам проксировать и балансировать нагрузку TCP и UDP-трафика, включая сопоставление портов с поддоменами.

Вот пример конфигурации для сопоставления порта 3306 с субдоменом «db.example.com»:

stream {
    server {
        listen 3306;
        proxy_pass db.example.com:3306;
    }
}

Сопоставление портов Nginx с поддоменами обеспечивает гибкость и масштабируемость при управлении несколькими сервисами на одном сервере. В этой статье мы рассмотрели три различных метода: использование серверных блоков, использование Nginx в качестве обратного прокси-сервера и использование модуля Nginx Stream для трафика, отличного от HTTP. Используя эти методы, вы можете эффективно направлять трафик на нужные поддомены и повысить общую производительность ваших веб-приложений.