我希望当前由 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-*
在静止的服务器。