Squid'i maven deposu olarak kullanma


10

Birisi maven depolarını yakınlaştırmak için Squid'i kullanmayı biliyor mu?

Bunun için yapılandırma dosyaları nelerdir?

Asıl sorun, önbellek davranışını kontrol eden üstbilgilerle maven istemcisi sorunu HTTP isteğidir (ve bunu atlamak istiyorum).

İşte tipik bir istek:

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

Zaten bunun için Apache HTTPD (ve disk_cache proxy_httpmodüller etkin) kullanıyorum, ancak proxy değil bir ayna oluşturuyorum.

Yapılandırma ( bu siteye göre ):

<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

1
Bunun yerine nexus kullanmayı düşündünüz mü?
artbristol

Tabii ki düşündüm. Ayrıca başkalarını da test ettim. Ancak hiçbir şey proxy modunda Apache kadar hızlı değildi. Bu yüzden gerçek bir proxy kullanmak ve belki de daha fazla performans elde etmek için Squid'i kullanmak istedim.
Anthony O.Mar

5
Performans istiyorsanız, yapay, nexus veya apache archiva gibi dahili bir yapay depo kullanın. Yeni bir modül istediğinizde internetten indirecek ve yerel ağınızda depolayacaklar, ağınızdaki bir kişinin aynı modüle ihtiyacı varsa, tekrar indirmeyi yapmak için internete gitmeye gerek yoktur. Bant genişliğinden tasarruf ve Cachesize ile ilgilenmeden.
Joao Vitorino

@JoaoVitorino ile aynı fikirdeyim - yapay bir önbellek yoluyla çekme kullanmak muhtemelen en iyi seçenektir.
slm

Yanıtlar:


0

Nexus gibi, merkezi mavenleri kendi yerel eserlerinizle tek bir havuzda birleştirmek, ilk istek üzerine merkezden indirilen eserlerin önbelleğe alınması gibi çok daha fazla esneklik sağlayacak uygun bir depo kullanmanızı öneriyorum (böylece tüm eserleri barındırmanıza gerek yok, sadece ihtiyacınız olanlar), sizi merkezdeki artefaktların silinmesine karşı korur (NPM sol panel fiyaskosunu düşünün), belirli artefaktların kullanımını önlemenizi sağlar (güvenlik açığı olan kırık bir artefakt olduğunu varsayalım, tüm kullanıcıların kullanmasını engelleyebilirsiniz) .

Ve hepsinden önemlisi, kullanıcılarınız Maven / Gradle / etc için proxy yapılandırmaları ayarlamak için zaman kaybetmek zorunda değildir. bu bazen zor olabilir ...

Ama bunu Squid'de yapmanız gerekiyorsa:

İzin verilen alanları girin /etc/squid/mavendomains.list.

İçinde squid.conf(veya dosyalarınız varsa ...):

acl maven-domains dstdomain "/etc/squid/mavendomains.list"
acl allowed-networks src x.x.x.x/x
http_access allow allowed-networks maven-domains
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.