Menggunakan Squid sebagai tempat penyimpanan pakar

10

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_httpmodul 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
Anthony O.
sumber
1
Sudahkah Anda mempertimbangkan untuk menggunakan nexus?
artbristol
Tentu saja saya sudah mempertimbangkannya. Saya juga sudah menguji yang lain. Tapi tidak ada yang secepat Apache dalam mode proxy. Itu sebabnya saya ingin menggunakan proxy nyata dan menggunakan Squid untuk mendapatkan lebih banyak pertunjukan.
Anthony O.
5
Jika Anda ingin kinerja, lebih masuk akal menggunakan repositori artifactory internal seperti artifactory, nexus atau apache archiva. Setiap kali Anda menginginkan modul baru, mereka akan mengunduh dari internet dan menyimpannya di jaringan lokal Anda, jika seseorang di jaringan Anda membutuhkan modul yang sama, tidak perlu pergi ke internet untuk mengunduh lagi. Menghemat bandwidth dan tanpa peduli tentang Cacheize.
Joao Vitorino
Saya setuju dengan @ JoaoVitorino - menggunakan penarik cache artifactory mungkin merupakan opsi terbaik.
slm

Jawaban:

0

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 ...):

acl maven-domains dstdomain "/etc/squid/mavendomains.list"
acl allowed-networks src x.x.x.x/x
http_access allow allowed-networks maven-domains
ETL
sumber