Кто-нибудь знает, как использовать Squid для проксификации репозиториев maven?
Какие файлы конфигурации для этого?
Основная проблема заключается в том, что клиент maven выдает HTTP-запрос с заголовками, которые контролируют поведение кеша (и я хочу обойти это).
Вот типичный запрос:
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
Я уже использую Apache HTTPD (и disk_cache
proxy_http
модули включены) для этого, но я создаю зеркало, а не прокси.
Вот конфигурация (на основе этот сайт):
<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
Я бы рекомендовал использовать соответствующий репозиторий, такой как Nexus, который обеспечит гораздо большую гибкость, например объединение центрального maven с вашим собственным локальным артефактом в один репозиторий, кеширование артефактов, загружаемых из центра по первому запросу (так что вам не нужно размещать все артефакты, только те, которые вам нужны), защищает вас от удаления артефактов в центре (подумайте о фиаско левой панели NPM), позволяет предотвратить использование определенных артефактов (скажем, есть сломанный артефакт, который имеет недостаток безопасности, вы можете заблокировать его использование всеми пользователями) .
И, прежде всего, вашим пользователям не нужно тратить время на настройку конфигураций прокси для Maven / Gradle / и т. Д. что иногда бывает непросто ...
Но если вы должны сделать это в Squid:
Поместите разрешенные домены в /etc/squid/mavendomains.list
.
В squid.conf
(или если у вас есть включаемые файлы ...):
acl maven-domains dstdomain "/etc/squid/mavendomains.list"
acl allowed-networks src x.x.x.x/x
http_access allow allowed-networks maven-domains