npm, pip ve composer gibi paket yöneticileriyle bir proxy kullanmak için proxy ayarlarını ortam değişkenleri (HTTP_PROXY, HTTPS_PROXY), komut satırı argümanları veya her paket yöneticisine özgü yapılandırma dosyaları üzerinden tanımlayın.
Birçok geliştirme ortamı kurumsal güvenlik duvarlarının arkasında çalışır veya trafik izleme gerektirir; bu da giden bağlantılar için HTTP ya da HTTPS proxy sunucusu kullanmayı zorunlu kılar. Bağımlılıkları dış registry'lerden indiren paket yöneticileri, doğru çalışabilmek için ağ isteklerini bu proxy'ler üzerinden yönlendirecek şekilde yapılandırılmalıdır.
Genel proxy yapılandırma kavramları
Proxy sunucuları HTTP ve HTTPS trafiğini yakalayıp iletebilir. Bu proxy'lere erişim için çoğu zaman kimlik doğrulama gerekir.
Proxy URL biçimi
İsteğe bağlı kimlik doğrulama da dahil olmak üzere standart proxy URL biçimi şudur:
protocol://[user:password@]host:port
protocol:httpveyahttpsuser:password: proxy kimlik doğrulaması için isteğe bağlı kimlik bilgileri.host: proxy sunucusunun hostname'i veya IP adresi.port: proxy sunucusunun dinlediği port (örneğin 8080, 3128).
Örnek: http://user:[email protected]:8080
Ortam değişkenleri
Paket yöneticileri dahil olmak üzere çeşitli araçlarda proxy yapılandırmanın en yaygın ve genellikle evrensel olarak tanınan yöntemi standart ortam değişkenleridir.
HTTP_PROXYveyahttp_proxy: HTTP istekleri için proxy sunucusunu belirtir.HTTPS_PROXYveyahttps_proxy: HTTPS istekleri için proxy sunucusunu belirtir.NO_PROXYveyano_proxy: proxy'yi atlaması gereken hostname, alan adı veya IP adreslerinin virgülle ayrılmış listesi. Dahili kaynaklara veya yerel geliştirme sunucularına doğrudan erişmek için kritik önemdedir.
Bu değişkenler Windows'ta genellikle büyük/küçük harfe duyarsızdır, ancak Unix benzeri sistemlerde duyarlıdır. Azami uyumluluk için hem UPPER_CASE hem de lower_case sürümlerini tanımlamak yaygın bir uygulamadır.
# Example for Unix-like systems (Linux, macOS)
export HTTP_PROXY="http://user:[email protected]:8080"
export HTTPS_PROXY="http://user:[email protected]:8080" # Genellikle HTTP_PROXY ile aynıdır
export NO_PROXY="localhost,127.0.0.1,.internal.domain.com"
# For Windows Command Prompt
set HTTP_PROXY=http://user:[email protected]:8080
set HTTPS_PROXY=http://user:[email protected]:8080
set NO_PROXY=localhost,127.0.0.1,.internal.domain.com
# For Windows PowerShell
$env:HTTP_PROXY="http://user:[email protected]:8080"
$env:HTTPS_PROXY="http://user:[email protected]:8080"
$env:NO_PROXY="localhost,127.0.0.1,.internal.domain.com"
npm (Node Package Manager)
npm, kendi yerleşik yapılandırma sistemi veya ortam değişkenleri ile yapılandırılabilir.
npm config ile yapılandırma
npm için tercih edilen yöntem, proxy ayarlarını doğrudan kendi yapılandırmasında tanımlamaktır. Bu, ayarları kalıcı olarak saklar.
# Set HTTP proxy
npm config set proxy http://user:[email protected]:8080
# Set HTTPS proxy (often the same as HTTP proxy)
npm config set https-proxy http://user:[email protected]:8080
# To unset a proxy
npm config rm proxy
npm config rm https-proxy
# Verify settings
npm config get proxy
npm config get https-proxy
Proxy'niz kimlik doğrulama gerektirmiyorsa user:password@ bölümünü çıkarın.
SSL sertifikası sorunları
Bir HTTPS proxy kullanırken veya bir HTTP proxy üzerinden HTTPS registry'ye bağlanırken npm, SSL sertifikası doğrulama sorunlarıyla karşılaşabilir. Bu durum, proxy HTTPS trafiğini yakalayıp sisteminizin güvenmediği kendi sertifikasıyla yeniden şifrelediğinde ortaya çıkar.
Bunu çözmek için şunları yapabilirsiniz:
1. Proxy'nin CA sertifikasını sisteminizin güven deposuna ekleyin. Önerilen güvenli yaklaşım budur.
2. npm'e belirli bir CA sertifika dosyasını kullanmasını söyleyin:
bash
npm config set cafile /path/to/proxy/ca-certificate.pem
3. Katı SSL doğrulamasını kapatın (üretim için önerilmez):
bash
npm config set strict-ssl false
Bu, sertifika doğrulamasını atlar ve sizi man-in-the-middle saldırılarına açık hale getirebilir. Yalnızca kontrollü ortamlarda geçici hata ayıklama için kullanın.
Registry yapılandırması
Kuruluşunuz doğrudan ya da farklı bir proxy üzerinden erişilen özel bir npm registry (örneğin Nexus, Artifactory) kullanıyorsa registry ayarının doğru olduğundan emin olun.
npm config set registry https://my-private-registry.example.com/npm/
pip (Python Package Installer)
pip; komut satırı bayrakları, ortam değişkenleri veya bir yapılandırma dosyası üzerinden proxy yapılandırmasını destekler.
Komut satırı bayrağı
Tek bir pip komutu için --proxy bayrağını kullanın:
pip install some-package --proxy http://user:[email protected]:8080
Yapılandırma dosyası
Kalıcı proxy ayarları için pip yapılandırma dosyasını değiştirin veya oluşturun.
* Linux/macOS: ~/.config/pip/pip.conf veya ~/.pip/pip.conf
* Windows: %APPDATA%\pip\pip.ini veya %HOME%\pip\pip.ini
[global] bölümüne şunu ekleyin:
# ~/.config/pip/pip.conf or %APPDATA%\pip\pip.ini
[global]
proxy = http://user:[email protected]:8080
Ortam değişkenleri
pip, standart HTTP_PROXY, HTTPS_PROXY ve NO_PROXY ortam değişkenlerine uyar. Tanımlıysalar otomatik olarak kullanılır.
export HTTP_PROXY="http://user:[email protected]:8080"
export HTTPS_PROXY="http://user:[email protected]:8080"
export NO_PROXY="localhost,127.0.0.1,.internal.domain.com"
pip install some-package
SSL sertifikası sorunları
npm'e benzer şekilde pip de SSL hatalarıyla karşılaşabilir.
1. Proxy'nin CA sertifikasını sistemin güven deposuna ekleyin.
2. İndeks için güvenilir bir host belirtin:
ini
# ~/.config/pip/pip.conf or %APPDATA%\pip\pip.ini
[global]
trusted-host = pypi.org
Bu, SSL doğrulaması başarısız olsa bile pip'in belirtilen host'a güvenmesini sağlar. Dikkatli kullanın.
3. Özel bir CA paketi belirtin:
ini
# ~/.config/pip/pip.conf or %APPDATA%\pip\pip.ini
[global]
cert = /path/to/proxy/ca-bundle.pem
Veya komut satırından: pip install some-package --cert /path/to/proxy/ca-bundle.pem
Özel paket indeksleri
Özel bir Python paket indeksi (örneğin Artifactory, Nexus) kullanıyorsanız index-url veya extra-index-url ayarını yapılandırın:
# ~/.config/pip/pip.conf or %APPDATA%\pip\pip.ini
[global]
index-url = https://my-private-pypi.example.com/simple/
Composer (PHP Dependency Manager)
Composer proxy yapılandırması için büyük ölçüde ortam değişkenlerine dayanır ve Git üzerinden alınan depolar için Git'in proxy ayarlarına da ihtiyaç duyabilir.
Ortam değişkenleri
Composer öncelikle standart HTTP_PROXY, HTTPS_PROXY ve NO_PROXY ortam değişkenlerini kullanır.
export HTTP_PROXY="http://user:[email protected]:8080"
export HTTPS_PROXY="http://user:[email protected]:8080"
export NO_PROXY="localhost,127.0.0.1,.internal.domain.com"
composer install
Composer yapılandırması (config.json)
Composer'ın genel HTTP/HTTPS trafiği için config.json içinde doğrudan bir proxy ayarı bulunmasa da, ortam değişkenleri tarafından kapsanmayan ya da farklı proxy gereken belirli VCS depoları için proxy ayarlarını yapılandırmak mümkündür.
Örneğin, Git için bir proxy yapılandırmak üzere:
{
"config": {
"github-oauth": {
"github.com": "YOUR_OAUTH_TOKEN"
}
}
}
Bu doğrudan bir proxy ayarı değildir, ancak ağla ilgili diğer yapılandırmaların nereye yazılabileceğini gösterir. Gerçek Git proxy'lemesi için sonraki bölüme bakın.
Git proxy yapılandırması
Composer paketleri çoğu zaman doğrudan Git depolarından (örneğin GitHub, GitLab) alır. Git trafiğinizin bir proxy üzerinden geçmesi gerekiyorsa Git'in kendisini yapılandırmalısınız.
# Set HTTP proxy for Git
git config --global http.proxy http://user:[email protected]:8080
# Set HTTPS proxy for Git
git config --global https.proxy http://user:[email protected]:8080
# To unset
git config --global --unset http.proxy
git config --global --unset https.proxy
# Verify
git config --global --get http.proxy
git config --global --get https.proxy
composer.json dosyanız vcs depolarını veya doğrudan Git URL'lerini kullanıyorsa bu özellikle önemlidir.
SSL sertifikası sorunları
Composer da diğer araçlar gibi SSL sorunlarıyla karşılaşabilir.
1. Proxy'nin CA sertifikasını sistemin güven deposuna ekleyin.
2. Git'i SSL doğrulamasını kapatacak şekilde yapılandırın (önerilmez):
bash
git config --global http.sslVerify false
Bu son çare olmalı ve son derece dikkatli kullanılmalıdır.
Yaygın proxy sorunlarını giderme
- Yanlış proxy adresi/portu: hostname'i, IP adresini ve portu iki kez kontrol edin. Yaygın bir hata, HTTPS proxy için HTTP kullanmak veya tersidir.
- Kimlik doğrulama hatası: proxy URL'sindeki kullanıcı adı ve parolanın doğru olduğundan ve özel karakter içeriyorsa URL kodlamalı olduğundan emin olun.
- SSL sertifika hataları:
SSL_ERROR_SYSCALL,certificate verify failedveya benzer hatalarla karşılaşıyorsanız proxy'niz SSL yakalama yapıyor olabilir. Proxy'nin kök CA sertifikasını sisteminizin güven deposuna kurun ya da paket yöneticisini belirli bir CA paketine güvenecek şekilde yapılandırın (yukarıda anlatıldığı gibi). NO_PROXYsorunları: dahili servisler hâlâ proxy üzerinden geçmeye çalışıyorsaNO_PROXYayarınızın doğru ve kapsamlı olduğunu doğrulayın.localhost,127.0.0.1ve ilgili tüm dahili alan adı soneklerini içerdiğinden emin olun.- Güvenlik duvarı engeli: makinenizin güvenlik duvarının veya ağ güvenlik gruplarının proxy sunucusunun IP ve portuna giden bağlantılara izin verdiğini doğrulayın.
- Karışık HTTP/HTTPS yapılandırması: bazı proxy'ler HTTP ve HTTPS'i farklı şekilde işler. Gerekiyorsa hem
HTTP_PROXYhem deHTTPS_PROXYdeğişkenlerini ya da paket yöneticisine özgü karşılıklarını yapılandırdığınızdan emin olun.
Proxy yapılandırma yöntemlerinin karşılaştırması
| Özellik / Yönetici | npm |
pip |
composer |
|---|---|---|---|
| Ortam değişkenleri | Evet (HTTP_PROXY, HTTPS_PROXY) |
Evet (HTTP_PROXY, HTTPS_PROXY) |
Evet (HTTP_PROXY, HTTPS_PROXY) |
| Özel yapılandırma komutu | npm config set proxy |
Proxy için doğrudan komut yok | Proxy için doğrudan komut yok |
| Yapılandırma dosyası konumu | ~/.npmrc |
~/.config/pip/pip.conf / %APPDATA%\pip\pip.ini |
composer.json içinde doğrudan proxy ayarı yok |
| Komut satırı bayrağı | Doğrudan proxy bayrağı yok | --proxy |
Doğrudan proxy bayrağı yok |
| URL içinde kimlik doğrulama | Evet | Evet | Evet |
| SSL sertifikası yönetimi | cafile, strict-ssl |
cert, trusted-host |
Sistem/Git yapılandırmasına dayanır |
| Git proxy bağımlılığı | Doğrudan bağımlılık yok | Doğrudan bağımlılık yok | Evet (git config ile) |
| Registry URL ayarı | registry |
index-url, extra-index-url |
repositories (composer.json içinde) |
