Använda Dev Proxy med WSL

Överblick
Mål: Använda Dev Proxy med Windows-undersystem för Linux (WSL)
Tid: 15 minuter
Krav:Konfigurera Dev Proxy, WSL är installerat

När du utvecklar program i WSL (Windows-undersystem för Linux) har du två alternativ för att använda Dev Proxy: köra det på din Windows-värd eller i WSL. Båda metoderna har sina fördelar beroende på ditt arbetsflöde för utveckling.

Den enklaste metoden är att installera och köra Dev Proxy i Windows. Med WSL:s automatiska proxy och speglat nätverksläge använder WSL Windows systemproxy, så program som körs i WSL får sin trafik fångad upp av Dev Proxy utan att konfigurera proxyn i WSL.

Konfigurera WSL-nätverk

Dev Proxy registrerar sig som Windows systemproxy på en localhost-adress (127.0.0.1:8000 som standard). För att program i WSL ska kunna använda den här proxyn aktiverar du följande inställningar i avsnittet [wsl2] i WSL-konfigurationsfilen som finns på Windows på %UserProfile%\.wslconfig:

[wsl2]
networkingMode=mirrored
autoProxy=true
Setting Description
networkingMode=mirrored Speglar Windows nätverksgränssnitt i Linux, vilket gör att program i WSL kan ansluta till servrar som körs på Windows, till exempel Dev Proxy, med hjälp av 127.0.0.1. Kräver Windows 11 version 22H2 eller senare. Standardvärdet är nat.
autoProxy=true Gör att WSL använder Windows HTTP-proxyinställningar, så att proxyn som konfigureras på Windows anges automatiskt i WSL. Tillgänglig på Windows 11. Aktiverad som standard.

När du har ändrat .wslconfig filen startar du om WSL för att ändringarna ska börja gälla:

wsl --shutdown

Anmärkning

I nat-standardnätverksläget kan program i WSL inte ansluta till Dev Proxy på Windows med hjälp av 127.0.0.1. Om du inte kan använda speglat nätverksläge kör du Dev Proxy i WSL i stället. Mer information finns i Alternativ 2: Dev Proxy i WSL.

Mer information finns i Åtkomst till nätverksprogram med WSL och Konfiguration av avancerade inställningar i WSL.

Konfigurera Dev Proxy i Windows

  1. Installera Dev Proxy i Windows med winget eller manuell installation.

  2. Starta Dev Proxy:

    devproxy
    
  3. Lita på certifikatet när du uppmanas att göra det.

Använda Dev Proxy från WSL

När Dev Proxy körs som systemproxy på Windows (standardbeteendet) och du har konfigurerat WSL-nätverk, dirigerar program i WSL automatiskt sin trafik genom den.

Starta din applikation i WSL som vanligt. Dev Proxy fångar upp HTTPS-begäranden som görs av program som respekterar proxyinställningarna.

Viktigt!

Starta om WSL när du har startat eller stoppat Dev Proxy

WSL läser Windows proxyinställningar när den startas. Om du startar Dev Proxy när WSL redan har körts, eller om du stoppar och startar om Dev Proxy, måste du starta om WSL för att ändringarna ska börja gälla:

wsl --shutdown

Starta sedan en ny WSL-session.

Lita på certifikatet i WSL

För att Dev Proxy ska kunna fånga upp HTTPS-trafik måste program i WSL lita på Dev Proxy-certifikatet. Du kan antingen kopiera certifikatet från Windows eller exportera det med hjälp av Dev Proxy-API:et.

Alternativ A: Kopiera certifikatet från Windows

  1. I WSL kopierar du certifikatet från Windows:

    cp "/mnt/c/Users/<your-username>/AppData/Local/Programs/Dev Proxy/rootCert.pfx" ~/
    
  2. Exportera och installera certifikatet:

    # 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
    

Alternativ B: Använd DEV Proxy-API:et

Dev Proxy-API:et kräver en bärartoken. När Dev Proxy körs på Windows hämtar du token genom att köra kommandot api token i en Windows-terminal:

devproxy api token

I WSL laddar du sedan ned och installerar certifikatet. Ersätt <token> med den token som du hämtade:

# 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

Anmärkning

Vissa program kan kräva extra konfiguration för att lita på systemcertifikatarkivet. För Node.js program kan du behöva ange NODE_TLS_REJECT_UNAUTHORIZED=0 i utvecklingssyfte. Att inaktivera certifikatverifiering rekommenderas inte för produktionskod.

Alternativ 2: Dev Proxy i WSL

Om du föredrar att köra Dev Proxy helt inom WSL installerar du den med linux-installationsmetoden och konfigurerar proxyn manuellt.

Installera Dev Proxy i WSL

Installationsskriptet kräver unzip för att extrahera Dev Proxy. Nya WSL-distributioner, som Ubuntu, inkluderar det inte som standard. Installera unzip:

sudo apt update
sudo apt install unzip

Installera Dev Proxy med installationsskriptet:

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

Konfigurera proxyn manuellt

Eftersom WSL inte har någon grafisk skrivbordsmiljö kan Dev Proxy inte registreras automatiskt som systemproxy. Konfigurera dina program så att de använder proxyn manuellt.

  1. Skapa en Dev Proxy-konfigurationsfil där asSystemProxy är inställt på 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"
    }
    
  2. Starta Dev Proxy:

    devproxy
    
  3. Lita på certifikatet:

    # 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. Konfigurera ditt program så att det använder proxyn. HTTPS_PROXY Ange miljövariabeln:

    export HTTPS_PROXY=http://127.0.0.1:8000
    

    Eller ange det när du kör programmet:

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

Tips/Råd

Mer information om hur du konfigurerar proxyn för Node.js program finns i Använda Dev Proxy med Node.js program.

Jämförelse av metoder

Egenskap Windows-värd (alternativ 1) Inuti WSL (alternativ 2)
Konfigurationskomplexitet Enkel Moderat
Requirements Windows 11 22H2 eller senare, WSL-speglat nätverksläge None
certifikathantering Engångskopiering från Windows Manuell export
Proxykonfiguration Automatisk (WSL Auto Proxy) Manuell (HTTPS_PROXY)
WSL-omstart krävs Ja, när du togglar proxy Nej.
Fungerar med alla WSL-appar Ja Beror på stöd för appproxy

För de flesta scenarier är det rekommenderat att köra Dev Proxy i Windows (alternativ 1) på grund av dess enkelhet och automatiska proxykonfiguration.

Felsökning

Förfrågningar fångas inte upp när Windows är värdplattformen.

Om Dev Proxy i Windows inte fångar upp begäranden från WSL:

  1. Kontrollera att networkingMode=mirrored och autoProxy=true är inställda i avsnittet [wsl2] i din .wslconfig-fil. Mer information finns i Konfigurera WSL-nätverk.

  2. Starta om WSL för att uppdatera proxyinställningarna:

    wsl --shutdown
    
  3. Kontrollera att Dev Proxy körs och registreras som systemproxy.

  4. Kontrollera att Dev Proxy-certifikatet är betrott i WSL.

unzip: kommandot hittades inte

Om installationsskriptet misslyckas med felet unzip: command not found, installera unzip och kör installationsskriptet igen:

sudo apt update
sudo apt install unzip

Certifikatfel

Om du ser certifikatfel:

  1. Kontrollera att du har installerat certifikatet i WSL genom att följa stegen i Lita på certifikatet i WSL.
  2. För Node.js program kan du behöva konfigurera programmet för att använda proxyagenten. Se Använda Dev Proxy med Node.js program.

Problem med WSL-nätverk

WSL 2 använder ett virtualiserat nätverkskort. Om du upplever nätverksproblem:

  1. Se till att Windows-brandväggen tillåter Dev Proxy.
  2. Prova att använda localhost i stället 127.0.0.1 för när du konfigurerar proxyadressen.