Содержание
Что такое Proxy Server и зачем он нужен в Angular?
При разработке Angular-приложений часто возникает проблема CORS (Cross-Origin Resource Sharing) при обращении к API. Proxy server решает эту задачу, перенаправляя запросы через локальный сервер разработки. Это позволяет:
- Обходить ограничения браузера на кросс-доменные запросы
- Тестировать API в среде, идентичной продакшену
- Упрощать работу с разными окружениями (dev/stage/prod)
- Эмулировать заголовки и куки для аутентификации
Пошаговая настройка прокси в Angular CLI
Для настройки прокси-сервера в Angular выполните следующие действия:
- Создайте файл конфигурации: В корне проекта создайте
proxy.conf.json
- Настройте правила перенаправления:
{ "/api/*": { "target": "https://your-api-domain.com", "secure": false, "changeOrigin": true, "logLevel": "debug" } }
- Интегрируйте с Angular CLI: В
angular.json
добавьте:"serve": { "options": { "proxyConfig": "proxy.conf.json" } }
- Запустите приложение: Используйте
ng serve
Практические примеры конфигурации прокси
Пример 1: Базовый прокси для REST API
{
"/users/**": {
"target": "http://api.example.com",
"pathRewrite": {"^/users": ""}
}
}
Пример 2: Прокси с аутентификацией
{
"/secure/*": {
"target": "https://secure-api.com",
"auth": "user:password",
"headers": {
"X-Custom-Header": "value"
}
}
}
Типичные проблемы и решения
- Проблема: Запросы не перенаправляются
Решение: Проверьте путь в proxy.conf.json и перезапуститеng serve
- Проблема: Ошибки SSL/TLS
Решение: Установите"secure": false
для self-signed сертификатов - Проблема: Не передаются куки
Решение: Добавьте"withCredentials": true
в конфигурацию - Проблема: Конфликт путей
Решение: ИспользуйтеpathRewrite
для коррекции URL
Оптимизация прокси для разных окружений
Для управления конфигурациями:
- Создайте отдельные файлы:
proxy.dev.json
,proxy.prod.json
- В
package.json
настройте скрипты:"start:dev": "ng serve --proxy-config proxy.dev.json", "start:prod": "ng serve --proxy-config proxy.prod.json"
- Используйте переменные окружения для динамической подстановки URL
FAQ по Proxy Server в Angular
- Вопрос: Работает ли прокси в продакшен-сборке?
Ответ: Нет, прокси работает только сng serve
для разработки. Для продакшена настройте обратный прокси (Nginx/Apache). - Вопрос: Как отлаживать прокси-запросы?
Ответ: Добавьте"logLevel": "debug"
в конфиг и смотрите логи в консоли. - Вопрос: Можно ли использовать несколько прокси-файлов?
Ответ: Да, объедините их через--proxy-config
или создайте мастер-конфиг с импортом. - Вопрос: Как обрабатывать WebSockets через прокси?
Ответ: Добавьте параметр"ws": true
в конфигурацию целевого пути. - Вопрос: Альтернативы встроенному прокси Angular?
Ответ: Используйте CORS-прокси (CORS-anywhere) или настройте middleware в Express.js.
Правильная настройка proxy server в Angular устраняет проблемы CORS, ускоряет разработку и обеспечивает гибкость при работе с API. Регулярно обновляйте конфигурации в соответствии с изменениями в бэкенд-сервисах.