Użycie Dev Proxy z WSL

Na pierwszy rzut oka
Celem: Używanie serwera proxy dev z podsystemem Windows dla systemu Linux (WSL)
Czas: 15 minut
Wymagania wstępne:Skonfiguruj serwer proxy dewelopera, zainstalowany WSL

Podczas tworzenia aplikacji w podsystemie WSL (Podsystem Windows dla systemu Linux) dostępne są dwie opcje korzystania z serwera proxy deweloperskiego: uruchamianie go na hoście systemu Windows lub w środowisku WSL. Oba podejścia mają swoje zalety w zależności od przepływu pracy programowania.

Najprostszym podejściem jest zainstalowanie i uruchomienie serwera proxy deweloperskiego w systemie Windows. Dzięki funkcji Auto Proxy i trybowi sieci lustrzanej w WSL, WSL używa systemowego serwera proxy Windows, więc aplikacje działające w WSL mają swój ruch przechwytywany przez Dev Proxy bez konfigurowania serwera proxy w WSL.

Konfigurowanie sieci WSL

Dev Proxy rejestruje się jako serwer proxy systemu Windows pod adresem localhost (127.0.0.1:8000 domyślnie). Aby aplikacje w WSL mogły korzystać z tego serwera proxy, włącz następujące ustawienia w sekcji [wsl2] pliku konfiguracji WSL znajdującego się pod adresem %UserProfile%\.wslconfig w systemie Windows:

[wsl2]
networkingMode=mirrored
autoProxy=true
Setting Description
networkingMode=mirrored Dubluje interfejsy sieciowe Windows w systemie Linux, co umożliwia aplikacjom w programie WSL łączenie się z serwerami działającymi w systemie Windows, takimi jak Dev Proxy, przy użyciu polecenia 127.0.0.1. Wymaga Windows 11 wersji 22H2 lub nowszej. Wartość domyślna to nat.
autoProxy=true Powoduje, że WSL używa ustawień serwera proxy HTTP systemu Windows, dzięki czemu serwer proxy skonfigurowany w systemie Windows jest automatycznie ustawiany w WSL. Dostępne na Windows 11. Włączone domyślnie.

Po zmianie .wslconfig pliku uruchom ponownie program WSL, aby zmiany zostały zastosowane:

wsl --shutdown

Uwaga / Notatka

W domyślnym trybie sieci NAT aplikacje w programie WSL nie mogą łączyć się z Dev Proxy w systemie Windows za pomocą 127.0.0.1. Jeśli nie możesz użyć trybu sieci lustrzanej, uruchom zamiast niego Dev Proxy w WSL. Aby uzyskać więcej informacji, zobacz Option 2: Dev Proxy inside WSL.

Aby uzyskać więcej informacji, zobacz Uzyskiwanie dostępu do aplikacji sieciowych przy użyciu protokołu WSL i konfiguracja ustawień zaawansowanych w programie WSL.

Konfigurowanie serwera proxy deweloperskiego w systemie Windows

  1. Zainstaluj Dev Proxy w systemie Windows z użyciem winget lub instalacji ręcznej.

  2. Uruchom serwer proxy deweloperów:

    devproxy
    
  3. Po wyświetleniu monitu ufaj certyfikatowi.

Korzystanie z serwera proxy deweloperskiego z poziomu usługi WSL

Gdy Dev Proxy działa jako systemowy serwer proxy w systemie Windows (zachowanie domyślne) i jeśli skonfigurowano sieć WSL, aplikacje w WSL automatycznie kierują swój ruch przez ten serwer proxy.

Uruchom aplikację w programie WSL tak, jak zwykle. Dev Proxy przechwytuje żądania HTTPS wysyłane przez aplikacje, które przestrzegają ustawień serwera proxy.

Ważna

Uruchom ponownie usługę WSL po uruchomieniu lub zatrzymaniu serwera proxy deweloperskiego

Podczas uruchamiania program WSL odczytuje ustawienia serwera proxy Windows. Jeśli uruchomisz serwer proxy deweloperów, gdy WSL jest już uruchomione, lub jeśli zatrzymasz i ponownie uruchomisz serwer proxy deweloperów, musisz ponownie uruchomić WSL, aby zmiany zaczęły obowiązywać.

wsl --shutdown

Następnie uruchom nową sesję WSL.

Ufaj certyfikatowi w programie WSL

Aby Dev Proxy przechwycił ruch HTTPS, aplikacje w WSL muszą ufać certyfikatowi Dev Proxy. Możesz skopiować certyfikat z systemu Windows lub wyeksportować go przy użyciu interfejsu API serwera proxy deweloperów.

Opcja A: Kopiowanie certyfikatu z systemu Windows

  1. W programie WSL skopiuj certyfikat z systemu Windows:

    cp "/mnt/c/Users/<your-username>/AppData/Local/Programs/Dev Proxy/rootCert.pfx" ~/
    
  2. Eksportuj i zainstaluj certyfikat:

    # 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
    

Opcja B: Użyj interfejsu API serwera proxy dewelopera

Dev Proxy API wymaga tokenu bearer. Gdy Dev Proxy jest uruchomiony w systemie Windows, pobierz token, uruchamiając polecenie api token w terminalu systemu Windows:

devproxy api token

Następnie w programie WSL pobierz i zainstaluj certyfikat. Zastąp <token> tokenem, który został pobrany:

# 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

Uwaga / Notatka

Niektóre aplikacje mogą wymagać dodatkowej konfiguracji, aby ufać magazynowi certyfikatów systemowych. W przypadku Node.js aplikacji może być konieczne ustawienie NODE_TLS_REJECT_UNAUTHORIZED=0 na potrzeby programowania. Wyłączenie weryfikacji certyfikatu nie jest zalecane w przypadku kodu produkcyjnego.

Opcja 2. Serwer proxy deweloperski wewnątrz programu WSL

Jeśli wolisz uruchamiać serwer proxy dev w całości w programie WSL, zainstaluj go przy użyciu metody instalacji systemu Linux i skonfiguruj serwer proxy ręcznie.

Instalowanie serwera proxy deweloperskiego w programie WSL

Skrypt konfiguracji wymaga unzip, aby wyodrębnić Dev Proxy. Świeże dystrybucje WSL, takie jak Ubuntu, nie zawierają go domyślnie. Zainstaluj program unzip:

sudo apt update
sudo apt install unzip

Zainstaluj serwer proxy deweloperów przy użyciu skryptu konfiguracji:

bash -c "$(curl -sL https://aka.ms/devproxy/setup.sh)"

Ręczne konfigurowanie serwera proxy

Ponieważ WSL nie ma graficznego środowiska pulpitu, Dev Proxy nie może się automatycznie zarejestrować jako serwer proxy systemowy. Skonfiguruj aplikacje do ręcznego używania serwera proxy.

  1. Utwórz plik konfiguracji serwera proxy dewelopera z ustawioną wartością asSystemProxyfalse:

    {
      "$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"
    }
    
  2. Uruchom serwer proxy deweloperów:

    devproxy
    
  3. Ufaj certyfikatowi:

    # 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
    
  4. Skonfiguruj aplikację tak, aby korzystała z serwera proxy. Ustaw zmienną środowiskową HTTPS_PROXY :

    export HTTPS_PROXY=http://127.0.0.1:8000
    

    Możesz też określić ją podczas uruchamiania aplikacji:

    HTTPS_PROXY=http://127.0.0.1:8000 node app.js
    

Wskazówka

Aby uzyskać więcej informacji na temat konfigurowania serwera proxy dla aplikacji Node.js, zobacz Use Dev Proxy with Node.js applications (Używanie serwera proxy deweloperskiego z aplikacjami Node.js).

Porównanie podejść

Funkcja Host systemu Windows (opcja 1) Wewnątrz WSL (opcja 2)
Złożoność instalacji Uproszczony Umiarkowane
Requirements Windows 11 22H2 lub nowszy, tryb sieci lustrzanej WSL None
Zarządzanie certyfikatami Jednorazowa kopia z systemu Windows Eksportowanie ręczne
Konfiguracja serwera proxy Automatyczne (WSL Auto Proxy) Ręczne (HTTPS_PROXY)
Wymagane jest ponowne uruchomienie programu WSL Tak, podczas przełączania serwera proxy Nie.
Działa ze wszystkimi aplikacjami WSL Tak Zależy od obsługi serwera proxy aplikacji

W większości scenariuszy uruchomienie serwera proxy deweloperskiego w systemie Windows (opcja 1) jest zalecanym podejściem ze względu na prostotę i automatyczną konfigurację serwera proxy.

Rozwiązywanie problemów

Żądania nie są przechwytywane podczas korzystania z hosta systemu Windows

Jeśli serwer proxy dev w systemie Windows nie przechwytuje żądań z programu WSL:

  1. Sprawdź, czy elementy networkingMode=mirrored i autoProxy=true są ustawione w sekcji [wsl2] pliku .wslconfig. Aby uzyskać więcej informacji, zobacz Konfigurowanie sieci WSL.

  2. Uruchom ponownie program WSL, aby odświeżyć ustawienia serwera proxy:

    wsl --shutdown
    
  3. Sprawdź, czy Dev Proxy jest uruchomiony i zarejestrowany jako serwer proxy systemowy.

  4. Sprawdź, czy certyfikat proxy dla deweloperów jest zaufany w WSL (Windows Subsystem for Linux).

unzip: nie znaleziono polecenia

Jeśli skrypt instalacyjny zakończy się niepowodzeniem z powodu błędu unzip: command not found , zainstaluj unzip i ponownie uruchom skrypt instalacyjny:

sudo apt update
sudo apt install unzip

Błędy certyfikatu

Jeśli wystąpią błędy certyfikatu:

  1. Upewnij się, że certyfikat został zainstalowany w programie WSL, wykonując kroki opisane w temacie Ufaj certyfikatowi w programie WSL.
  2. W przypadku aplikacji Node.js może być konieczne skonfigurowanie aplikacji do korzystania z agenta serwera proxy. Zobacz Use Dev Proxy with Node.js applications (Używanie serwera proxy deweloperskiego z aplikacjami Node.js).

Problemy z siecią WSL

Program WSL 2 używa zwirtualizowanej karty sieciowej. Jeśli wystąpią problemy z siecią:

  1. Upewnij się, że zapora systemu Windows zezwala na Dev Proxy.
  2. Spróbuj użyć localhost zamiast 127.0.0.1 podczas konfigurowania adresu serwera proxy.