如果标头设置,有没有办法回退nginx proxy_pass

时间:2015-04-09 06:31:23

标签: nginx amazon-s3

nginx服务器提供http://server1.comhttp://server2.comhttp://server3.com

nginx upstreams请求处理一些ruby代码。

server1.com,server2.com和server3.com实际上是存储在亚马逊s3上的一些静态文件。

我想做下一步:找到' server1'的存储桶名称主机,放入db一些日志并通知nginx从亚马逊流。 也许通过在ruby代码头中设置url到amazon s3 bucket并稍后使用这个url。

流程:浏览器 - > nginx - >红宝石 - > nginx - > amazon_s3 - >浏览器

我发现如何在错误时执行此操作:

http {
  server {
     listen 12345; #Port that my custom app was assigned
     server_name mydomain.com;

     location / {
       proxy_intercept_errors on;
       error_page 400 403 502 503 504 = @fallback;
       proxy_pass http://the_old_site_domain.com;      
     }

     location @fallback {
       proxy_pass http://myfallback.domain.com;
     }
  }
}

但是有没有办法根据标题的出现做一些相似的事情?

谢谢!

UPD 这就是我测试标题的方法:

if ($http_x_custom_header) {
  ....
}

如果设置nginx应该做一些内部重定向,对吧?

但是如何在 ruby​​代码之后调用

1 个答案:

答案 0 :(得分:2)

有一个名为X-Accel-...的特殊标题。 您需要X-Accel-Redirect