Squidを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
代わりにネクサスの使用を検討しましたか?
artbristol 2012年

もちろん私はそれを考慮しました。他の人もテストしました。しかし、プロキシモードのApacheほど高速なものはありませんでした。そのため、実際のプロキシを使用し、Squidを使用してさらに多くのパフォーマンスを取得したいと考えました。
アンソニーO.

5
パフォーマンスが必要な場合は、アーティファクト、ネクサス、Apacheアーカイブなどの内部アーティファクトリポジトリを使用することをお勧めします。新しいモジュールが必要になるたびに、インターネットからダウンロードしてローカルネットワークに保存します。ネットワーク内の誰かがこの同じモジュールを必要とする場合は、インターネットにアクセスしてダウンロードを再度行う必要はありません。帯域幅を節約し、キャッシュサイズを気にしません。
Joao Vitorino 2016年

私は@JoaoVitorinoに同意します-アーティファクトのプルスルーキャッシュを使用することはおそらく最良のオプションです。
slm 2018年

回答:


0

中央のmavenを独自のローカルアーティファクトと1つのリポジトリに組み合わせたり、最初のリクエストで中央からダウンロードされたアーティファクトをキャッシュしたりできるため、Nexusのような適切なリポジトリを使用することをお勧めします(すべてのアーティファクトをホストする必要がないため、必要なものだけ)、中央でのアーティファクトの削除から保護します(NPMの左パッドの大失敗を考える)、特定のアーティファクトの使用を防止できます(たとえば、セキュリティ上の欠陥がある壊れたアーティファクトがある場合、すべてのユーザーがそれを使用できないようにブロックできます)。 。

そして何よりも、ユーザーはMaven / Gradle / etcのプロキシ設定をセットアップする時間を無駄にする必要はありません。時にはトリッキーになることがあります...

しかし、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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.