Використання кальмарів як сховища Maven


10

Хтось знає, як використовувати 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

1
Чи планували ви замість цього використовувати Nexus?
artbristol

Звичайно, я це врахував. Я також перевіряв інших. Але нічого не було так швидко, як Apache в режимі проксі. Ось чому я хотів використовувати справжній проксі-сервер і використовувати Squid, можливо, щоб отримати ще більше виставок.
Ентоні О.

5
Якщо ви хочете виконати, майте більше сенсу скористатися внутрішнім артефакторним сховищем, таким як артефактичний, Nexus або Apache Archiva. Кожен раз, коли ви хочете новий модуль, він завантажуватиметься з Інтернету та зберігатиметься у вашій локальній мережі, якщо комусь у вашій мережі потрібен цей самий модуль, не потрібно переходити до Інтернету. Збереження пропускної здатності та без піклування про Cachesize.
Жоао Віторіно

Я погоджуюся з @JoaoVitorino - використання перетягування кеш-артефактури, мабуть, найкращий варіант.
slm

Відповіді:


0

Я рекомендую використовувати належне сховище типу Nexus, яке дозволить набагато більшу гнучкість, наприклад, поєднання центрального Maven з власним локальним артефактом в одне сховище, кешування артефактів, завантажених з центрального за першим запитом (тому вам не потрібно розміщувати всі артефакти, лише ті, що вам потрібні), захищає вас від видалення артефактів у центральній частині (думаю, фіаско NPM з лівої панелі), дозволяє запобігти використанню певних артефактів (скажімо, є зламаний артефакт, який має ваду безпеки, ви можете заблокувати використання його всіма користувачами) .

І, перш за все, вашим користувачам не потрібно витрачати час на налаштування проксі-конфігурацій для Maven / Gradle / тощо. що часом може бути складним ...

Але якщо ви повинні зробити це в кальмарах:

Помістіть дозволені домени в /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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.