Nginx代理/图像到/ web /图像

时间:2014-01-22 10:09:52

标签: nginx

我在几台服务器前面有一个Nginx负载均衡器。我正在重写URL以将以/ admin开头的所有内容发送到管理服务器,以/ web开头的任何内容发送到Web服务器,以/ api开头的任何内容到api服务器。

我现在想重写以/ image开头的任何内容到/ web / image。

到目前为止,这是我的配置:

upstream api-cluster {
  ip_hash;
  server apiserver1.com;
}

upstream web-cluster {
  ip_hash;
  server webserver1.com;
}

upstream admin-cluster {
  ip_hash;
  server adminserver1.com;
}

server {
  listen 443 ssl spdy;
  server_name myloadbalancer.com;
  keepalive_timeout 70;

  ssl                 on;
  ssl_certificate     /etc/ssl/foo.crt;
  ssl_certificate_key /etc/ssl/foo.key;

  location /api {
    proxy_pass http://api-cluster;
  }

  location /web {
    proxy_pass http://web-cluster;
  }

  location /admin {
    proxy_pass http://admin-cluster;
  }

  location / {
    deny all;
  }
}

我有一个用于图像大小调整的API,位于webserver1.com/web/image,示例网址:

webserver1.com/web/image/foo.png?width=300&height=150

如何重写:

myloadbalancer.com/image/foo.png?width=300&height=150

到网络服务器网址?

1 个答案:

答案 0 :(得分:0)

您可以使用重写将/ image / foo转换为/ web / image / foo,然后使用proxypass将其发送到webserver1.com。类似的东西:(未经测试)

 location /image {
    rewrite ^/image /web/image break;
    proxy_pass http://web-cluster;
 }