Конфигурация NGinx Proxy_Pass для субдоменов и портов

Вопрос или проблема

Пытаюсь настроить разные поддомены *****.example.com, чтобы они перенаправлялись на разные порты (сервера) на локальной машине. Это Windows.

server {
listen 80;
server_name jellyfin.example.com;

location / {
    proxy_pass http://localhost:8096;
}

}server {
listen 80;
server_name dynmap.example.com;

location / {
    proxy_pass http://localhost:8123;
}

}server {
listen 80;
server_name hfs.example.com;

location / {
    proxy_pass http://localhost:1080;
}

}

Это в какой-то степени работает для Jellyfin и HFS, но средний dynmap застревает. Но работает, когда перейти на example.com:8123. Или работает в первый раз или иногда. Есть ли лучший способ сделать это?

Ответ или решение

Настройка прокси-сервера NGinx для работы с поддоменами и портами — это важный аспект обеспечения доступности различных сервисов на одном сервере. Ваша задача заключается в том, чтобы правильно настроить NGinx для обработки запросов к нескольким поддоменам, направляя их на соответствующие порты локального сервера. Рассмотрим вашу конфигурацию и возможные пути её оптимизации.

1. Анализ текущей конфигурации

Вы предоставили следующие блоки конфигурации для поддоменов:

server {
    listen 80;
    server_name jellyfin.example.com;

    location / {
        proxy_pass http://localhost:8096;
    }
}

server {
    listen 80;
    server_name dynmap.example.com;

    location / {
        proxy_pass http://localhost:8123;
    }
}

server {
    listen 80;
    server_name hfs.example.com;

    location / {
        proxy_pass http://localhost:1080;
    }
}

2. Проблема с Dynmap

Вы указали, что поддомен dynmap.example.com работает нестабильно. Это может быть вызвано несколькими факторами, включая:

  • Кэширование или неправильно настроенные заголовки.
  • Неправильная обработка запросов от NGinx к локальному серверу на порту 8123.

3. Рекомендации по оптимизации конфигурации

Чтобы улучшить работоспособность и стабильность, рассмотрите следующие предложения:

3.1. Правильное использование заголовков

Добавьте заголовки для управления кэшированием и передачи информации о клиенте. Например:

location / {
    proxy_pass http://localhost:8123;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

Эти строки помогут Dynmap и другим сервисам корректно обрабатывать входящие запросы.

3.2. Обработка веб-сокетов

Если ваш сервис на порту 8123 использует веб-сокеты, необходимо добавить настройки для их правильной обработки:

location / {
    proxy_pass http://localhost:8123;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

3.3. Проверка конфигурации и перезагрузка

После внесения изменений обязательно проверьте синтаксис конфигурации командой:

nginx -t

После успешной проверки перезагрузите NGinx:

nginx -s reload

4. Заключение

Следуя этим рекомендациям, вы сможете оптимизировать свою конфигурацию NGinx для поддоменов и портов, что обеспечит стабильную работу всех ваших сервисов. Убедитесь, что каждый параметр настроен должным образом, и проведите тестирование, чтобы выявить возможные проблемы. Возможно, вам также стоит рассмотреть добавление HTTPS, используя Let’s Encrypt для улучшения безопасности.

Оцените материал
Добавить комментарий

Капча загружается...