Apakah ada yang tahu cara menggunakan Squid untuk memproksikan repositori pakar?
Apa file konfigurasi untuk itu?
Masalah utama adalah bahwa klien masalah permintaan HTTP dengan header yang mengontrol perilaku cache (dan saya ingin memotong itu).
Berikut ini permintaan khusus:
GET /maven/proxy/jboss-public/org/richfaces/richfaces-bom/4.2.0.Final/richfaces-bom-4.2.0.Final.pom HTTP/1.1
Cache-control: no-cache
Cache-store: no-store
Pragma: no-cache
Expires: 0
Accept-Encoding: gzip
User-Agent: Apache-Maven/3.0.4 (Java 1.6.0_26; Linux 2.6.32-38-generic)
Host: 192.168.2.171
Connection: Keep-Alive
Saya sudah menggunakan Apache HTTPD (dan disk_cache
proxy_http
modul diaktifkan) untuk itu, tapi saya membuat mirror, bukan proxy.
Berikut ini konfigurasi (berdasarkan situs itu ):
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
# central
ProxyPass /maven/proxy/central http://repo1.maven.org/maven2
ProxyPassReverse /maven/proxy/central http://repo1.maven.org/maven2
CacheEnable disk /maven/proxy/central
# jboss-public-repository-group
ProxyPass /maven/proxy/jboss-public http://repository.jboss.org/nexus/content/groups/public
ProxyPassReverse /maven/proxy/jboss-public http://repository.jboss.org/nexus/content/groups/public
ProxyPassReverseCookiePath /nexus /maven/proxy/jboss-public
CacheEnable disk /maven/proxy/jboss-public
# codehaus
ProxyPass /maven/proxy/codehaus http://repository.codehaus.org/
ProxyPassReverse /maven/proxy/codehaus http://repository.codehaus.org/
CacheEnable disk /maven/proxy/codehaus
CacheDirLength 2
CacheDirLevels 3
# Override default cache expiration and control
CacheDefaultExpire 2419200
CacheMaxExpire 2419200
# Ignore requests to not serve from cache. Maven data never changes.
CacheIgnoreCacheControl On
CacheIgnoreNoLastMod On
CacheStoreNoStore On
# Default max file size is 64K. Set to 1GB.
CacheMaxFileSize 1073741824
apache-2.2
squid
maven
Anthony O.
sumber
sumber
Jawaban:
Saya akan merekomendasikan menggunakan repositori yang tepat seperti Nexus yang akan memungkinkan lebih banyak fleksibilitas seperti menggabungkan pakar pusat dengan artefak lokal Anda menjadi satu repositori, caching artefak yang diunduh dari pusat atas permintaan pertama (jadi Anda tidak perlu meng-host semua artefak, hanya yang Anda butuhkan), melindungi Anda dari penghapusan artefak di pusat (pikirkan kegagalan NPM leftpad), memungkinkan Anda untuk mencegah penggunaan artefak tertentu (misalnya ada artefak yang rusak yang memiliki cacat keamanan, Anda dapat memblokir semua pengguna dari menggunakannya) .
Dan, di atas semua itu, pengguna Anda tidak perlu membuang waktu untuk mengatur konfigurasi proxy untuk Maven / Gradle / dll. yang terkadang rumit ...
Tetapi jika Anda harus melakukannya di Squid:
Masukkan domain yang diizinkan ke
/etc/squid/mavendomains.list
.Di
squid.conf
(atau jika Anda telah memasukkan file ...):sumber