Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
На первый взгляд
Цель: Использование прокси-сервера разработки с подсистемой Windows для Linux (WSL)
Время: 15 минут
Предварительные требования:Настройка прокси-сервера разработки, установленного WSL
При разработке приложений в WSL (подсистема Windows для Linux) вы можете использовать прокси-сервер разработки: запуск приложения на узле Windows или в WSL. Оба подхода имеют свои преимущества в зависимости от рабочего процесса разработки.
Вариант 1. Прокси разработки на узле Windows (рекомендуется)
Самый простой подход — установить и запустить прокси-сервер разработки в Windows. WSL автоматически использует системный прокси-сервер Windows, поэтому приложения, работающие в WSL, перехватываются прокси-сервером разработки без дополнительной настройки.
Настройка прокси-сервера разработки в Windows
Установите прокси-сервер разработки в Windows с помощью winget или ручной установки.
Запуск прокси-сервера разработки:
devproxyПри появлении запроса доверяйте сертификату.
Использование прокси-сервера разработки из WSL
Когда прокси-сервер разработки запускается в качестве системного прокси-сервера в Windows (поведение по умолчанию), приложения в WSL автоматически направляют трафик через него.
Запустите ваше приложение в WSL как обычно. Прокси-сервер разработки перехватывает HTTPS-запросы, сделанные приложением.
Это важно
Перезапустите WSL после запуска или остановки Dev Proxy (прокси для разработки)
WSL кэширует параметры системного прокси-сервера. Если вы запускаете прокси-сервер разработки после того, как WSL уже запущен, или при остановке и перезапуске прокси-сервера разработки необходимо перезапустить WSL, чтобы изменения вступили в силу:
wsl --shutdown
Затем запустите новый сеанс WSL.
Доверие к сертификату в WSL
Чтобы прокси-сервер разработки перехватил трафик HTTPS, приложения в WSL должны доверять сертификату прокси-сервера разработки. Вы можете скопировать сертификат из Windows или экспортировать его с помощью API прокси-сервера разработки.
Вариант A. Копирование сертификата из Windows
В WSL скопируйте сертификат из Windows:
cp /mnt/c/Users/<your-username>/.config/dev-proxy/rootCert.pfx ~/Экспорт и установка сертификата:
# Export the certificate openssl pkcs12 -in ~/rootCert.pfx -clcerts -nokeys -out dev-proxy-ca.crt -passin pass:"" # Install the certificate sudo cp dev-proxy-ca.crt /usr/local/share/ca-certificates/ # Update certificates sudo update-ca-certificates
Вариант B. Использование API прокси-сервера разработки
Пока прокси-сервер разработки работает в Windows, скачайте и установите сертификат:
# Download the certificate from Dev Proxy API
curl -o dev-proxy-ca.crt http://127.0.0.1:8897/proxy/rootCertificate?format=crt
# Install the certificate
sudo cp dev-proxy-ca.crt /usr/local/share/ca-certificates/
# Update certificates
sudo update-ca-certificates
Замечание
Для некоторых приложений может потребоваться дополнительная конфигурация для доверия к хранилищу системных сертификатов. Для Node.js приложений может потребоваться задать NODE_TLS_REJECT_UNAUTHORIZED=0 для целей разработки. Отключение проверки сертификата не рекомендуется для рабочего кода.
Вариант 2: Прокси-сервер для разработки внутри WSL
Если вы предпочитаете запускать прокси-сервер разработки полностью в WSL, установите его с помощью метода установки Linux и настройте прокси-сервер вручную.
Установка прокси-сервера разработки в WSL
Установите прокси-сервер разработки с помощью скрипта установки:
bash -c "$(curl -sL https://aka.ms/devproxy/setup.sh)"
Настройка прокси-сервера вручную
Так как WSL не имеет графической настольной среды, Dev Proxy не может автоматически зарегистрироваться в качестве системного прокси-сервера. Настройте приложения для использования прокси-сервера вручную.
Создайте файл конфигурации прокси-сервера для разработки с
asSystemProxyзаданным значениемfalse:{ "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.4.0/rc.schema.json", "asSystemProxy": false, "plugins": [ { "name": "RetryAfterPlugin", "enabled": true, "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll" }, { "name": "GenericRandomErrorPlugin", "enabled": true, "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll", "configSection": "genericRandomErrorPlugin" } ], "urlsToWatch": [ "https://jsonplaceholder.typicode.com/*" ], "genericRandomErrorPlugin": { "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.4.0/genericrandomerrorplugin.schema.json", "errorsFile": "devproxy-errors.json" }, "rate": 50, "logLevel": "information" }Запуск прокси-сервера разработки:
devproxyДоверяйте сертификату:
# Export Dev Proxy root certificate openssl pkcs12 -in ~/.config/dev-proxy/rootCert.pfx -clcerts -nokeys -out dev-proxy-ca.crt -passin pass:"" # Install the certificate sudo cp dev-proxy-ca.crt /usr/local/share/ca-certificates/ # Update certificates sudo update-ca-certificatesНастройте приложение для использования прокси-сервера.
HTTPS_PROXYЗадайте переменную среды:export HTTPS_PROXY=http://127.0.0.1:8000Или укажите его при запуске приложения:
HTTPS_PROXY=http://127.0.0.1:8000 node app.js
Подсказка
Дополнительные сведения о настройке прокси-сервера для приложений Node.js см. в разделе "Использование прокси-сервера разработки" с Node.js приложениями.
Сравнение подходов
| Функция | Узел Windows (вариант 1) | Внутри WSL (вариант 2) |
|---|---|---|
| Сложность настройки | Простота | Умеренный |
| Управление сертификатами | Однократное копирование из Windows | Экспорт вручную |
| Конфигурация прокси-сервера | Автоматический (системный прокси-сервер) | Вручную (HTTPS_PROXY) |
| Обязательный перезапуск WSL | Да, при переключении прокси-сервера | нет |
| Работает со всеми приложениями WSL | Да | Зависит от поддержки прокси приложения |
В большинстве случаев запуск прокси-сервера разработки в Windows (вариант 1) является рекомендуемом подходом из-за простоты и автоматической настройки прокси-сервера.
Устранение неполадок
Запросы не перехватываются при использовании узла Windows
Если прокси-сервер разработки в Windows не перехватывает запросы из WSL:
Перезапустите WSL, чтобы обновить параметры прокси-сервера:
wsl --shutdownУбедитесь, что прокси-сервер разработки запущен и зарегистрирован в качестве системного прокси-сервера.
Убедитесь, что сертификат Dev Proxy доверенный в WSL.
Ошибки сертификатов
Если вы видите ошибки сертификата:
- Убедитесь, что сертификат установлен в WSL, выполнив действия, описанные в разделе "Доверять сертификату в WSL".
- Для Node.js приложений может потребоваться настроить приложение для использования прокси-агента. См. раздел "Использование прокси-сервера разработки" с Node.js приложениями.
Проблемы с сетью WSL
WSL 2 использует виртуализированный сетевой адаптер. При возникновении проблем с сетью:
- Убедитесь, что брандмауэр Windows разрешает Dev Proxy.
- Попробуйте использовать
localhostвместо127.0.0.1настройки прокси-адреса.