Alguém sabe como usar o Squid para proxify repositórios maven?
Quais são os arquivos de configuração para isso?
O principal problema é que o cliente maven emite uma solicitação HTTP com cabeçalhos que controlam o comportamento do cache (e eu quero ignorá-lo).
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
módulos ativados) para isso, mas estou criando um espelho, não um proxy.
Aqui está a configuração (com base nesse 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
apache-2.2
squid
maven
Anthony O.
fonte
fonte
Respostas:
Eu recomendaria o uso de um repositório adequado como o Nexus, que permitirá muito mais flexibilidade, como combinar o maven central com seu próprio artefato local em um repositório, armazenar em cache os artefatos baixados da central na primeira solicitação (para que você não precise hospedar todos os artefatos, somente aqueles que você precisa), protege você contra a exclusão de artefatos na central (pense no NPM leftpad fiasco), permite impedir o uso de certos artefatos (digamos que há um artefato quebrado que possui uma falha de segurança, você pode impedir que todos os usuários o usem) .
E, acima de tudo, seus usuários não precisam perder tempo configurando configurações de proxy para o Maven / Gradle / etc. o que pode ser complicado às vezes ...
Mas se você deve fazer isso no Squid:
Coloque domínios permitidos
/etc/squid/mavendomains.list
.Em
squid.conf
(ou se você tiver arquivos incluídos ...):fonte