小编use*_*963的帖子

使用nginx proxy_pass修改Location标头

我有一个nginx proxy_pass设置将每个请求传递/api给后端Tomcat REST服务.在某些情况下,此服务返回一个Location标头,该标头根据请求的类型而变化,例如,Location: http://foo.bar/baz/api/search/1234567- 该baz部分是由于它在Tomcat上托管.

我当前的配置foo.bar正确地重写了主机名,但baz保留了部件的完整性.我想剥离它,但proxy_pass选项似乎仅限于清除或设置标头的新值.

有没有办法在传递到客户端之前动态修改标头,例如使用正则表达式替换?这是我的nginx配置:

location /api {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    proxy_max_temp_file_size 0;
    client_max_body_size    10m;
    client_body_buffer_size 128k;
    proxy_connect_timeout   90;
    proxy_send_timeout      90;
    proxy_read_timeout      90;
    proxy_buffers           32 4k;
    proxy_redirect off;

    proxy_pass http://foo.bar:8080/baz/api;
}
Run Code Online (Sandbox Code Playgroud)

regex rewrite header nginx proxypass

15
推荐指数
1
解决办法
3万
查看次数

动态RSpec规范生成

我想基于外部数据源动态生成一系列规范.具体来说,我有一个已下载的Google电子表格,电子表格中的每一行都应该用于自己的测试用例:

describe "Cases" do
  before(:all) do
    # Download spreadsheet and
    # populate cases in DB
  end

  Cases.each do |case|
    it "Case #{case.num}" do
      # spec
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为对于RSpec的初学者来说,(在我理解的情况下)并没有"在编译时看到"任何规范,所以before(:all)永远不会执行.如果我要放置一个空it块,它就会before(:all)执行,但之后我会遇到Cases.each在其他任何事情之前被评估的问题,这是空的,因为它还没有被before(:all)块填充.

简而言之,我很困惑,而且我对RSpec的理解似乎非常有限.我想获取数据,使用该数据设置一堆规范,然后让它们由RSpec运行.如果Cases是一个先前设置的数组(在describe块之外),这会(可能?)工作,但我需要在运行时设置它.我想在RSpec做什么?

ruby specifications rspec dynamic

10
推荐指数
1
解决办法
3450
查看次数

标签 统计

dynamic ×1

header ×1

nginx ×1

proxypass ×1

regex ×1

rewrite ×1

rspec ×1

ruby ×1

specifications ×1