Czy ktoś wie, jak używać Squid do proxy repozytoriów maven?
Jakie są pliki konfiguracyjne do tego?
Głównym problemem jest to, że klient maven wydaje żądanie HTTP z nagłówkami, które kontrolują zachowanie pamięci podręcznej (i chcę to pominąć).
Oto typowa prośba:
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
Już do tego używam Apache HTTPD (i disk_cache
proxy_http
włączone moduły), ale tworzę kopię lustrzaną, a nie proxy.
Oto konfiguracja (oparta na tej stronie ):
<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.
źródło
źródło
Odpowiedzi:
Polecam użycie odpowiedniego repozytorium, takiego jak Nexus, które zapewni znacznie większą elastyczność, np. Połączenie centralnego maven z własnym lokalnym artefaktem w jednym repozytorium, buforowanie artefaktów pobranych z centralnego na pierwsze żądanie (więc nie musisz hostować wszystkich artefaktów, tylko te, których potrzebujesz), chroni cię przed usunięciem artefaktów w centrali (pomyśl fiasko po lewej stronie NPM), pozwala zapobiec użyciu niektórych artefaktów (powiedzmy, że istnieje uszkodzony artefakt, który ma wadę bezpieczeństwa, możesz zablokować wszystkim użytkownikom korzystanie z niego) .
Przede wszystkim użytkownicy nie muszą tracić czasu na konfigurowanie konfiguracji proxy dla Maven / Gradle / itp. co czasami może być trudne ...
Ale jeśli musisz to zrobić w Squid:
Wprowadź dozwolone domeny
/etc/squid/mavendomains.list
.W
squid.conf
(lub jeśli masz dołączone pliki ...):źródło