Sử dụng Squid làm kho lưu trữ maven


10

Có ai biết làm thế nào để sử dụng Squid để proxify kho lưu trữ maven?

Các tập tin cấu hình cho điều đó là gì?

Vấn đề chính là máy khách maven đưa ra yêu cầu HTTP với các tiêu đề kiểm soát hành vi bộ đệm (và tôi muốn bỏ qua điều đó).

Đây là một yêu cầu điển hình:

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

Tôi đã sử dụng Apache HTTPD (và disk_cache proxy_httpcác mô-đun được bật) cho điều đó, nhưng tôi đang tạo một bản sao chứ không phải proxy.

Đây là cấu hình (dựa trên trang web đó ):

<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
Bạn đã xem xét sử dụng nexus thay thế?
artbristol

Tất nhiên tôi đã xem xét nó. Tôi cũng đã thử nghiệm những người khác. Nhưng không có gì nhanh bằng Apache trong chế độ proxy. Đó là lý do tại sao tôi muốn sử dụng proxy thực sự và sử dụng Squid để có thể có được nhiều màn trình diễn hơn nữa.
Anthony O.

5
Nếu bạn muốn sự hoàn hảo, hãy có ý nghĩa hơn, sử dụng một kho lưu trữ nhân tạo nội bộ như artifactory, nexus hoặc apache archiva. Mỗi khi bạn muốn một mô-đun mới, họ sẽ tải xuống từ internet và lưu trữ trên mạng cục bộ của bạn, nếu ai đó trong mạng của bạn cần cùng mô-đun này, không cần phải truy cập internet để tải xuống lại. Tiết kiệm băng thông và không cần quan tâm đến Cachesize.
Joao Vitorino

Tôi đồng ý với @JoaoVitorino - sử dụng bộ nhớ cache của artifactory có lẽ là lựa chọn tốt nhất.
slm

Câu trả lời:


0

Tôi khuyên bạn nên sử dụng một kho lưu trữ thích hợp như Nexus, điều này sẽ cho phép linh hoạt hơn nhiều như kết hợp maven trung tâm với tạo tác cục bộ của riêng bạn vào một kho lưu trữ, lưu trữ các tạo phẩm được tải xuống từ trung tâm theo yêu cầu đầu tiên (vì vậy bạn không cần lưu trữ tất cả các tạo phẩm, chỉ những người bạn cần), bảo vệ bạn khỏi việc xóa hiện vật ở trung tâm (nghĩ rằng NPM leftpad fiasco), cho phép bạn ngăn chặn việc sử dụng một số vật phẩm nhất định (giả sử có một tạo phẩm bị hỏng có lỗi bảo mật, bạn có thể chặn tất cả người dùng sử dụng nó) .

Và, trên hết, người dùng của bạn không phải lãng phí thời gian để thiết lập cấu hình proxy cho Maven / Gradle / vv. đôi khi có thể khó khăn ...

Nhưng nếu bạn phải làm điều đó trong Squid:

Đặt tên miền được phép vào /etc/squid/mavendomains.list.

Trong squid.conf(hoặc nếu bạn có các tệp ...):

acl maven-domains dstdomain "/etc/squid/mavendomains.list"
acl allowed-networks src x.x.x.x/x
http_access allow allowed-networks maven-domains
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.