Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
На первый взгляд
Цель: Использование прокси-сервера разработки с подсистемой Windows для Linux (WSL)
Время: 15 минут
Предварительные требования:Настройка прокси-сервера разработки, установленного WSL
При разработке приложений в WSL (подсистема Windows для Linux) вы можете использовать прокси-сервер разработки: запуск приложения на узле Windows или в WSL. Оба подхода имеют свои преимущества в зависимости от рабочего процесса разработки.
Вариант 1. Прокси разработки на узле Windows (рекомендуется)
Самый простой подход — установить и запустить прокси-сервер разработки в Windows. При использовании автоматического прокси-сервера WSL и зеркального сетевого режима WSL использует системный прокси-сервер Windows, поэтому трафик приложений, работающих в WSL, перехватывается Dev Proxy без настройки прокси-сервера в WSL.
Настроить сеть WSL
Прокси-сервер разработки регистрируется в качестве системного прокси-сервера Windows по адресу localhost (127.0.0.1:8000 по умолчанию). Чтобы приложения в WSL использовали этот прокси-сервер, включите следующие параметры в разделе [wsl2] файла конфигурации WSL, расположенного по адресу %UserProfile%\.wslconfig в Windows:
[wsl2]
networkingMode=mirrored
autoProxy=true
| Setting | Description |
|---|---|
networkingMode=mirrored |
Зеркально отражает сетевые интерфейсы Windows в Linux, что позволяет приложениям в WSL с помощью 127.0.0.1 подключаться к серверам, работающим в Windows, например к Dev Proxy. Требуется Windows 11 версии 22H2 или более поздней версии. Значение по умолчанию — nat. |
autoProxy=true |
Делает так, чтобы WSL использовал параметры HTTP-прокси Windows, чтобы прокси-сервер, настроенный в Windows, автоматически устанавливался в WSL. Доступно на Windows 11. Включено по умолчанию. |
После изменения .wslconfig файла перезапустите WSL, чтобы изменения вступили в силу:
wsl --shutdown
Замечание
В сетевом режиме NAT по умолчанию приложения в WSL не могут подключаться к Dev Proxy в Windows с помощью 127.0.0.1. Если вы не можете использовать зеркальный сетевой режим, запустите Dev Proxy в WSL. Дополнительные сведения см. в разделе Вариант 2: Использование прокси-сервера разработки в WSL.
Дополнительные сведения см. в разделе Доступ к сетевым приложениям с помощью WSL и Настройка дополнительных параметров в WSL.
Настройка прокси-сервера разработки в Windows
Установите прокси-сервер разработки в Windows с помощью winget или ручной установки.
Запуск прокси-сервера разработки:
devproxyПри появлении запроса доверяйте сертификату.
Использование прокси-сервера разработки из WSL
При запуске Dev Proxy в качестве системного прокси-сервера Windows (поведение по умолчанию), если вы настроили сеть WSL, приложения в WSL автоматически перенаправляют свой трафик через него.
Запустите ваше приложение в WSL как обычно. Dev Proxy перехватывает HTTPS-запросы, сделанные приложениями, которые учитывают параметры прокси-сервера.
Это важно
Перезапустите WSL после запуска или остановки Dev Proxy (прокси для разработки)
WSL считывает параметры прокси-сервера Windows при запуске. Если вы запускаете прокси-сервер разработки после того, как WSL уже запущен, или при остановке и перезапуске прокси-сервера разработки необходимо перезапустить WSL, чтобы изменения вступили в силу:
wsl --shutdown
Затем запустите новый сеанс WSL.
Доверие к сертификату в WSL
Чтобы прокси-сервер разработки перехватил трафик HTTPS, приложения в WSL должны доверять сертификату прокси-сервера разработки. Вы можете скопировать сертификат из Windows или экспортировать его с помощью API прокси-сервера разработки.
Вариант A. Копирование сертификата из Windows
В WSL скопируйте сертификат из Windows:
cp "/mnt/c/Users/<your-username>/AppData/Local/Programs/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 прокси-сервера разработки
ДЛЯ API прокси-сервера разработки требуется маркер носителя. Пока Dev Proxy работает в Windows, получите маркер, выполнив команду api token в терминале Windows:
devproxy api token
Затем в WSL скачайте и установите сертификат. Замените <token> на маркер, который вы получили:
# Download the certificate from Dev Proxy API
curl -H "Authorization: Bearer <token>" -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
Для извлечения Dev Proxy требуется unzip. Свежие дистрибутивы WSL, такие как Ubuntu, не включают его по умолчанию. Установите unzip:
sudo apt update
sudo apt install unzip
Установите прокси-сервер разработки с помощью скрипта установки:
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/v4.0.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/v4.0.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) |
|---|---|---|
| Сложность настройки | Простота | Умеренный |
| Requirements | Windows 11 22H2 или более поздней версии, режим сети с зеркальным отображением WSL | None |
| Управление сертификатами | Однократное копирование из Windows | Экспорт вручную |
| Конфигурация прокси-сервера | Автоматически (WSL Auto Proxy) | Вручную (HTTPS_PROXY) |
| Обязательный перезапуск WSL | Да, при переключении прокси-сервера | нет |
| Работает со всеми приложениями WSL | Да | Зависит от поддержки прокси приложения |
В большинстве случаев запуск прокси-сервера разработки в Windows (вариант 1) является рекомендуемом подходом из-за простоты и автоматической настройки прокси-сервера.
Устранение неполадок
Запросы не перехватываются при использовании узла Windows
Если прокси-сервер разработки в Windows не перехватывает запросы из WSL:
Убедитесь, что
networkingMode=mirroredиautoProxy=trueзаданы в[wsl2]разделе файла.wslconfig. Дополнительные сведения см. в разделе Настройка сети WSL.Перезапустите WSL, чтобы обновить параметры прокси-сервера:
wsl --shutdownУбедитесь, что прокси-сервер разработки запущен и зарегистрирован в качестве системного прокси-сервера.
Убедитесь, что сертификат Dev Proxy доверенный в WSL.
unzip: команда не найдена
Если скрипт установки завершается ошибкой unzip: command not found , установите unzip и запустите скрипт установки еще раз:
sudo apt update
sudo apt install unzip
Ошибки сертификатов
Если вы видите ошибки сертификата:
- Убедитесь, что сертификат установлен в WSL, выполнив действия, описанные в разделе "Доверять сертификату в WSL".
- Для Node.js приложений может потребоваться настроить приложение для использования прокси-агента. См. раздел "Использование прокси-сервера разработки" с Node.js приложениями.
Проблемы с сетью WSL
WSL 2 использует виртуализированный сетевой адаптер. При возникновении проблем с сетью:
- Убедитесь, что брандмауэр Windows разрешает Dev Proxy.
- Попробуйте использовать
localhostвместо127.0.0.1настройки прокси-адреса.