我正在尝试将我们的应用服务器与网站图库存储分开。我在 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;
}