我在几台服务器前面有一个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
到网络服务器网址?
答案 0 :(得分:0)
您可以使用重写将/ image / foo转换为/ web / image / foo,然后使用proxypass将其发送到webserver1.com。类似的东西:(未经测试)
location /image {
rewrite ^/image /web/image break;
proxy_pass http://web-cluster;
}