Maven 저장소로 Squid 사용


10

누군가가 오징어를 사용하여 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
넥서스를 대신 사용해 보셨습니까?
artbristol

물론 나는 그것을 고려했다. 나는 또한 다른 사람들을 테스트했습니다. 그러나 프록시 모드에서 Apache만큼 빠르지는 않았습니다. 그렇기 때문에 실제 프록시를 사용하고 Squid를 사용하여 더 많은 성능을 얻고 싶었습니다.
Anthony O.

5
성능을 원한다면 인공물, 넥서스 또는 아파치 아치와 같은 내부 인공물 저장소를 사용하는 것이 더 합리적입니다. 새 모듈을 원할 때마다 인터넷에서 다운로드하여 로컬 네트워크에 저장합니다. 네트워크에있는 누군가가 동일한 모듈이 필요한 경우 인터넷으로 다시 다운로드하지 않아도됩니다. 캐시 크기에 신경 쓰지 않고 대역폭 절약.
Joao Vitorino 2016 년

@JoaoVitorino에 동의합니다-인공 캐시를 사용하는 것이 가장 좋은 옵션 일 것입니다.
slm 2016 년

답변:


0

Nexus와 같은 적절한 리포지토리를 사용하여 중앙 메이븐을 자체 로컬 아티팩트와 하나의 리포지토리에 결합하고, 처음 요청시 중앙에서 다운로드 한 아티팩트를 캐싱하는 등의 유연성을 높일 수 있습니다 (따라서 모든 아티팩트를 호스팅 할 필요는 없습니다. 중앙에서 아티팩트 삭제로부터 사용자를 보호하고 (NPM 왼쪽 패드 fiasco 생각) 특정 아티팩트의 사용을 방지 할 수 있습니다 (보안 결함이있는 손상된 아티팩트가 있으므로 모든 사용자가이를 사용하지 못하도록 차단할 수 있음) .

그리고 무엇보다도 사용자는 Maven / Gradle / etc에 대한 프록시 구성을 설정하는 데 시간을 낭비하지 않아도됩니다. 때때로 까다로울 수 있습니다 ...

그러나 오징어에서해야한다면 :

허용 도메인을에 넣습니다 /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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.