11 votes

Utiliser Squid comme dépôt maven

Quelqu'un sait-il comment utiliser Squid pour vérifier les dépôts maven ?

Quels sont les fichiers de configuration pour cela ?

Le problème principal est que le client maven émet une requête HTTP avec des en-têtes qui contrôlent le comportement du cache (et je veux contourner cela).

Voici une demande typique :

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

Je suis déjà en train d'utiliser Apache HTTPD (et disk_cache proxy_http modules activés) pour cela, mais je crée un miroir, pas un proxy.

Voici la configuration (basée sur ce site ) :

<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

1voto

ETL Points 6403

Je recommanderais d'utiliser un dépôt approprié comme Nexus qui permettra beaucoup plus de flexibilité comme la combinaison de maven central avec votre propre artefact local dans un dépôt, la mise en cache des artefacts téléchargés à partir de central à la première demande (donc vous n'avez pas besoin d'héberger tous les artefacts, seulement ceux dont vous avez besoin), vous protège de la suppression des artefacts dans central (pensez au fiasco du leftpad de NPM), vous permet d'empêcher l'utilisation de certains artefacts (disons qu'il y a un artefact cassé qui a une faille de sécurité, vous pouvez bloquer tous les utilisateurs de l'utiliser).

Et, par-dessus tout, vos utilisateurs ne doivent pas perdre de temps à mettre en place des configurations de proxy pour Maven/Gradle/etc., ce qui peut parfois être délicat...

Mais si vous devez le faire dans Squid :

Mettez les domaines autorisés dans /etc/squid/mavendomains.list .

En squid.conf (ou si vous avez des fichiers include...) :

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X