Для настройки Nginx, чтобы он автоматически перенаправлял запросы на разные порты в зависимости от указанного порта в URL, вы можете использовать конфигурацию Nginx с динамическим сопоставлением.
### Шаги для настройки Nginx
1. **Настройка переменной `port`:**
Вы можете использовать переменную `$request_uri` для извлечения порта из URL. Для этого вам необходимо использовать регулярные выражения.
2. **Конфигурация Nginx:**
Вот пример конфигурации, который делает то, что вам нужно:
```nginx
server {
listen 80; # или listen 443 ssl; если используется HTTPS
server_name host.com;
location ~ ^/([0-9]{1,5})$ {
set $port $1; # Извлекаем порт из URI
# Проверяем, действительно ли такой порт существует
if ($port !~ ^(3000|3001|3002|3003)$) {
return 404; # Возвращаем ошибку 404, если порт не поддерживается
}
proxy_pass http://localhost:$port; # Перенаправляем на соответствующий порт
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;
}
# Дополнительно: если у вас есть статические файлы
location /static {
alias /path/to/static/files;
}
}
```
### Примечания
- Убедитесь, что используемые вами порты (например, 3000, 3001, 3002 и т. д.) на самом деле запущены и ваши приложения слушают на этих портах.
- Если вы планируете использовать HTTPS, вам необходимо будет добавить соответствующие директивы для сертификатов SSL.
- Чтобы не вручную прописывать разрешенные порты, можно также сопоставлять порты динамически, но такая конфигурация может привести к уязвимостям, если не будет с учетом проверок безопасности.
- После внесения изменений в конфигурацию Nginx, не забудьте проверить конфигурацию (`nginx -t`) и перезапустить или перезагрузить Nginx для применения изменений (`systemctl restart nginx` или `nginx -s reload`).
Теперь при обращении к URL вроде `https://host.com/3001`, Nginx будет перенаправлять запросы к вашему приложению на порту 3001.