nginx 将规则重写为来自子域名的服务器图像?

nginx 将规则重写为来自子域名的服务器图像?

我希望当前由 mydomain.com/files/ 提供服务的所有图像(jpg|gif|png)都由第二台机器提供服务,我已将第二台机器设置为由 static.mydomain.com 提供服务文件。

我想知道如何定义 nginx 重写规则吗?

谢谢

答案1

您可以使用代理密码: http://wiki.nginx.org/HttpProxyModule#proxy_pass

在你的情况下,这可能是这样的:

location /mydomain.com/files/.*\.(jpg|gif|png) {
       proxy_pass http://static.mydomain.com;
       proxy_set_header X-Real-IP  $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         }

答案2

请注意,minniux 的解决方案不是重写,而是会导致所有流量通过“重定向”主机。这不是想要。

使用改写指令改为:

location /files/.*\.(jpg|gif|png) {
    rewrite ^/(.*)$ "$scheme://static.mydomain.com/$1" permanent;
}

您不需要使rewrite的正则表达式更加复杂;该location块已经仅影响匹配的请求。

$scheme变量允许您重定向到https或者http取决于原始方案。

PS:重定向还可以免除X-Forwarded-*静止的服务器。

相关内容