Что такое прокси в Angular и зачем он нужен
При разработке Angular-приложений часто возникает проблема CORS (Cross-Origin Resource Sharing), когда фронтенд на localhost пытается обращаться к API на другом домене. Прокси-сервер решает эту проблему, перенаправляя запросы через development-сервер Angular CLI. Это позволяет:
- Избежать ошибок CORS во время разработки
- Тестировать API без развёртывания бэкенда
- Имитировать разные окружения (dev/stage/prod)
- Упростить работу с относительными путями API
Использование прокси особенно критично при работе с микросервисной архитектурой, где серверы развёрнуты на разных портах или доменах.
Пошаговая настройка прокси в Angular
- Создайте proxy.conf.json в корне проекта:
{
"/api/*": {
"target": "http://localhost:3000",
"secure": false,
"logLevel": "debug",
"changeOrigin": true
}
}
- Обновите angular.json, добавив в раздел “serve”:
"options": {
"proxyConfig": "proxy.conf.json"
}
- Запустите приложение командой
ng serve - Все запросы к
/api/usersбудут перенаправлены наhttp://localhost:3000/api/users
Продвинутые сценарии конфигурации
Множественные цели
{
"/auth": { "target": "http://auth-server:4000" },
"/api": { "target": "http://api-server:5000" }
}
Перезапись путей
{
"/backend": {
"target": "http://localhost:3000",
"pathRewrite": { "^/backend": "" }
}
}
Обработка WebSockets
{
"/socket.io": {
"target": "ws://localhost:6000",
"ws": true
}
}
Типичные проблемы и решения
- Прокси не работает: Проверьте путь к конфигу в angular.json и перезапустите сервер
- Ошибки 404: Убедитесь, что target-сервер запущен и путь совпадает с API
- Сброс сессии: Добавьте
"cookieDomainRewrite": "localhost"в конфиг - Медленные запросы: Отключите
"logLevel": "debug"в продакшн-режиме
FAQ: Частые вопросы о прокси в Angular
Q: Нужен ли прокси в продакшн-сборке?
A: Нет. Прокси работает только с ng serve. Для продакшна настройте reverse proxy (Nginx, Apache).
Q: Как обрабатывать HTTPS-серверы?
A: Установите "secure": true и добавьте сертификат через "ca" параметр.
Q: Можно ли использовать переменные окружения?
A: Да. Создайте proxy.conf.js вместо JSON и используйте process.env:
module.exports = {
'/api': { target: process.env.API_URL }
}
Q: Как отладить прокси-запросы?
A: Добавьте "logLevel": "debug" и проверяйте вывод в консоли Angular CLI.
Q: Работает ли с Angular Universal?
A: Нет. Для SSR используйте middleware Express.js для проксирования.
Правильная настройка прокси ускоряет разработку и предотвращает головную боль с CORS. Помните, что это инструмент для dev-режима, а финальное API должно быть настроено через окружения.








