Usando o Squid como um repositório maven

9

Alguém sabe como usar o Squid para proxificar repositórios maven?

Quais são os arquivos de configuração para isso?

O principal problema é que o cliente do maven envia solicitação HTTP com cabeçalhos que controlam o comportamento do cache (e eu quero contornar isso).

Aqui está uma solicitação típica:

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

Eu já estou usando o Apache HTTPD (e disk_cache proxy_http modules enabled) para isso, mas estou criando um espelho, não um proxy.

Aqui está a configuração (com base no 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
    
por Anthony O. 24.02.2012 / 18:29

1 resposta

0

Eu recomendaria usar um repositório adequado como o Nexus, o que permitirá muito mais flexibilidade, como combinar o maven central com seu próprio artefato local em um repositório, o armazenamento em cache dos artefatos baixados da central na primeira solicitação (para que você não precise hospedar todos os artefatos, apenas aqueles que você precisa), protege você da exclusão de artefatos na central (pense em fiasco do leftpad do NPM), permite evitar o uso de determinados artefatos (digamos que há um artefato quebrado com uma falha de segurança, você pode bloquear todos os usuários usando-o).

E, acima de tudo, seus usuários não precisam perder tempo configurando configurações de proxy para Maven / Gradle / etc. o que pode ser complicado às vezes ...

Mas se você precisar fazer isso no Squid:

Coloque domínios permitidos em /etc/squid/mavendomains.list .

Em squid.conf (ou se você incluir arquivos ...):

acl maven-domains dstdomain "/etc/squid/mavendomains.list"
acl allowed-networks src x.x.x.x/x
http_access allow allowed-networks maven-domains
    
por 15.06.2018 / 16:11