Nginx 将特定位置重定向到单独的服务器

Nginx 将特定位置重定向到单独的服务器

我正在尝试将我们的应用服务器与网站图库存储分开。我在 xxx.xxx.xxx.1 上有一个应用服务器,在 xxx.xxx.xxx.2 上有一个包含所有图片的图库服务器。现在我想这样做,这样每次以 *.jpeg 结尾和/或以 www.domain.com/uploads 开头的请求进入服务器时,都会重定向到 www.gallerydomain.com。

我已经检查了第二台服务器并且它运行正常。

现在我在第一台服务器上尝试执行以下操作:

location /uploads {
        proxy_pass      http://www.gallerydomain.com;
}

但它似乎不起作用。

有人在 Nginx 中遇到过这种情况吗?或者有人能给我指出正确的方向吗?非常感谢。

答案1

抱歉,我没有看到上面的评论。要在客户端进行重定向,这可能很有用:

server {

    server_name    domain.com;

    ...

    rewrite ^/uploads/(.*)$      http://www.gallerydomain.com/$1        permanent;
    rewrite ^/(.*)\.jpg$         http://www.gallerydomain.com/$1.jpg    permanent;

    ...

}

Nginx 在每个与重写模式匹配的请求上返回“HTTP 301 永久移动”响应。这样,浏览器就会根据“Location:”HTTP 响应标头的内容重定向到新位置(并且知道该位置)。

答案2

您可以通过在位置块中使用正则表达式来解决此问题:

location ~ ^/uploads/|\.jpg$ {
    proxy_pass http://www.gallerydomain.com;
}

相关内容