Maven 저장소로 Squid 사용 0 Accept-Encoding: gzip User-Agent: Apache-Maven/3.0.4 (Java

누군가가 오징어를 사용하여 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와 같은 적절한 리포지토리를 사용하여 중앙 메이븐을 자체 로컬 아티팩트와 하나의 리포지토리에 결합하고, 처음 요청시 중앙에서 다운로드 한 아티팩트를 캐싱하는 등의 유연성을 높일 수 있습니다 (따라서 모든 아티팩트를 호스팅 할 필요는 없습니다. 중앙에서 아티팩트 삭제로부터 사용자를 보호하고 (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