应该大家都已经遇到了,最近两三天,通过 gems.ruby-china.org 下载 gem 的时候,会偶尔出现 Bad Gateway 502
的问题。
$ gem install sass
ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError)
bad response Bad Gateway 502 (https://gems-ruby-china.b0.upaiyun.com/quick/Marshal.4.8/sass-3.4.22.gemspec.rz)
遇到这类问题,可以重试一下一般就可以了。 问题原因我还在和 UpYun 沟通,已经个他们反馈了,还需要等待答复,这些文件(/gems, /quick 路径下的所有文件) 都是直接有 CDN 来处理的。
截至 2016-05-18 问题已经解决了,我们将 RubyGems 上面的 60 多万个文件镜像到了 UpYun 的国内存储里面。
问题已经找到,解决了!
原因:UpYun 对文件在 CDN 里面存储的时间有一个缓存设置界面,按其他云主机的习惯,我设定了:
我的期望是对这两个目录的文件长久缓存 1 年,再配合 UpYun 的镜像存储功能,让用户端的请求尽可能的命中 CDN 和 UpYun 的存储。
但经过刚才的检查发现,这个规则不对,UpYun 的缓存设置界面对目录的设置,需要用 * 通配符才可以,于是我修改成了这样:
再次测试,返回的 Cache-Control 和我设定的值一致了:
应该问题是这样的:
gem install annotate -v '2.7.1'
ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError)
bad response Bad Gateway 502 (https://gems-ruby-china.b0.upaiyun.com/gems/arel-6.0.3.gem)
北京 依然有这个问题
上海...安装 cocoapods 问题持续存在... ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError) bad response Bad Gateway 502 (https://gems-ruby-china.b0.upaiyun.com/quick/Marshal.4.8/cocoapods-0.2.0.gemspec.rz)
$ curl -I https://gems-ruby-china.b0.upaiyun.com/quick/Marshal.4.8/cocoapods-0.2.0.gemspec.rz
HTTP/1.1 200 OK
Server: marco/0.12.0
Date: Wed, 11 May 2016 05:07:53 GMT
Content-Type: binary/octet-stream
Content-Length: 509
Connection: keep-alive
X-Source: C/304
X-Proxy-Route: abroad, abroad
X-Amz-Replication-Status: COMPLETED
X-Served-By: cache-hkg6821-HKG
ETag: "732c80427c275cfafaa8c4e8ba397df2"
X-Amz-Request-Id: 65F2B3274AF6C632
X-Cache-Hits: 2
X-Amz-Version-Id: kHyODCRDIT14OO_.zJcJ9mjeB1HJR2rQ
Last-Modified: Tue, 02 Feb 2016 08:14:21 GMT
X-Amz-Id-2: vVzPIqXSomAXNGrLQe+mX37iB1kTxWaTxZ4CBdW44xTLW+ZtOTrehTrDWxhxPRSiYXVKC+ruLao=
Fastly-Debug-Digest: abae697b5247ae8c645198aa257a33fbf5806ef3ddfde073d5a2c6287bda5f4a
Age: 1887
Accept-Ranges: bytes
Expires: Thu, 11 May 2017 05:07:35 GMT
Cache-Control: max-age=31536000
X-Cache: MISS|MISS(S) from mix-hz-fdi-163; MISS(S)|HIT from ctn-zj-lna-088
X-Request-Id: 8931372901c8d844bb869b05ee80dfb7; ca6a1c0496b87d5f9222668519950ec1
Via: T.249100.N.2, T.101163.S.1, T.101163.S.2, S.mix-hz-fdi-165, V.mix-hz-fdi-165, T.249100.H.1, M.ctn-zj-lna-088
你这样试试呢
赞,刚跑也报错
ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError)
bad response Bad Gateway 502 (https://gems-ruby-china.b0.upaiyun.com/quick/Marshal.4.8/bundler-1.12.3.gemspec.rz)
换回 taobao 了,再换回来试看看
#15 楼 @linyunjiang 因为现在配置正确了,文件访问成功以后,会自动转存到 UpYun 的文件存储里面持久化,未来的请求都直接从存储里面拿,无需在回源,这个需要一点时间让那些文件都被命中到。
现在我已经通过 FTP 连上镜像存储里面看到已经有 8000 多个文件存进去了,都是今天的(也就是说确实如上面的猜测,之前没存进去)。
16:17 更新:现在已经 17000 多个文件了
gem install cyaml
ERROR: Could not find a valid gem 'cyaml' (>= 0), here is why:
Unable to download data from https://gems.ruby-china.org/ - no such name (https://gems.ruby-china.org/specs.4.8.gz)
怎么破? gem udpate rails Updating installed gems ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError) SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://rubygems-china.oss-cn-hangzhou.aliyuncs.com/specs.4.8.gz)
我觉得问题还是没解决 503 错误仍然不稳定的出现(即使第一次下载正确第二次依然 503,显然没有动用到缓存)暂时切换到 ruby.taobao.org