Вопрос или проблема
Пытаюсь настроить разные поддомены *****.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 для улучшения безопасности.