80 端口被强制转换到 443
和这个没有关系
估计是没有设置
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
}
@lijy91 API 设计阶段,RAML 比 Swagger 要好
or 的写法一直用 arel
用过 openresty,快,但是稍微复杂点的逻辑写起来就很繁琐了。 从全栈角度看 Rails 优势还是很大,毕竟周边库那么多 非全栈的话每个语言、框架都有各自的优势,没有可比性
按 微服务 那书上的说的,优先用 RESTful
可以考虑使用 https://github.com/openresty/lua-nginx-module#ngxlocationcapture_multi 减少客户端的请求,然后结合 http 的 cache 来减少 api gateway 对各 microservice 的请求
@psvr 定制后和社区脱节这个确实是个问题,综合来看还是对 rugged 修改比较靠谱。
@yakjuly +1
个人也认为应用层修改比较简单,具体想法如下:
每个组织分配一台机器 然后所有非组织用户分配一台机器
上述所有机器上都独立部署 gitlab(nginx、unicorn、sidekiq【redis 使用 127.0.0.1】),共用一个 RDS
所有机器修改 /etc/ssh/sshd_config AuthorizedKeysCommand 指定脚本,脚本发送 http 请求到上述机器中的某一台机器判断 ssh 请求是否合法,禁用所有机器的 /home/gitlab/.ssh/authorized_keys,这个步骤是为了解决【必须在 rails 中将通过网页添加的 SSH 密钥广播给集群内的所有机器】这个问题
最后结合上面说的 VIPServer 统一 http ssh 访问地址
@psvr 这样呢?
ssh -R 开启 socket proxy privoxy 转 socket proxy 到 http proxy proxychain 命令行程序使用代理
@huacnlee 不推荐改 $rvm_path/config/db,rvm 提供了 $rvm_path/user/db,ref https://rvm.io/rvm/configuration
用 monit 就够了,而且 https://github.com/seuros/capistrano-sidekiq#usage 本身就提供了支持
systemd 是王道,upstart 是要被淘汰的东西。
如果要提供批量 API 接口,那么就不要用 POST /api/books,写个 POST /api/books/batch 也行。
request body { "books" =>[{ "name" => "aaa", "author" => "bbb" }, { "name" => "ccc", "author" => "ddd" }] }
,接口内使用事务,要么全部成功,要么全部失败这样处理起来比较好,好像没有见过返回成功几个失败几个的接口。
sed & awk
sidekiq + sidekiq-limit_fetch,用一个线程去发请求,加个 sleep 1 就差不多了
要我,我会去 nginx 中加个 location
我觉得这种单独 OSS 的 gem 不好,哪天又来个 ECS 的,很多重复的东西啊。
举例:https://github.com/aws/aws-sdk-ruby 和 https://github.com/marcel/aws-s3 你选哪个?
@mumu https://ruby-china.org/topics/27594#reply6
拼 request post xml,然后用 http client 发送,得到 response 后用 savon 解析
Web Service 比较不好弄,当时我们对接别人的时候我是用 http client + savon 来配合使用的,如果 post 的 xml 比较复杂的时候还是拼吧
http_resp = Faraday.new.post do |req|
req.url = 'xxx'
req.headers = {'Content-Type' => 'text/xml; charset=UTF-8'}
req.body = "<xml>"
end
httpi_resp = HTTPI::Response.new http_resp.status, http_resp.headers, http_resp.body
globals = {}
globals[:strip_namespaces] = true #这里可以按需求定义很多东西
locals = {}
soap_resp = Savon::Response.new(httpi_resp, globals, locals)
if soap_resp.http.error?
xxx
end
if soap_resp.soap_fault?
body_hash = soap_resp.body
hash = body_hash['Fault']
fault_code = hash['faultcode']
fault_msg = hash['faultstring']
end
wget -m
+ sed
@dfguo https://webpack.github.io/docs/stylesheets.html 用 extract-text-webpack-plugin 确实不错,thanks
曾经 Ember 有 {{partial}} 这样的 helper 来做模版片段复用,但是第一,以后没有 {{partial}} 了,二来用 {{partial}} 做布局是错误的选择。
为啥是错误的选择呢?
学 webpack 吧,比 browserify 好 另外集成到 rails 最好的方式是 "webpack 生成个 xxx.bundle.js 拷贝到 vendor/assets/javascripts,然后交给 assets 处理。"
其他方式配置折腾下来发现还不如直接用 assets