重定向域的特定URL,同时保持其他域不受影响

时间:2014-03-04 23:00:39

标签: windows-7 nginx url-redirection hosts

我正在尝试用extern cdn请求的外来flash应用程序替换一些图像。因此我用行

修改了我的etc / hosts
127.0.0.1 static.cdn.example.com

现在我正在运行一个nginx网络服务器,代理所有对cdn的调用。我要替换的图像被路由到本地文件,所有其他图像应该传递给原始的cdn。我的nginx配置看起来像这样

location /flash {
    rewrite ^.*image1.png /image1.png;
    rewrite ^.*image2.png /image2.png;
    rewrite ^.*image3.png /image3.png;
    proxy_pass http://static.cdn.example.com;
}

问题是,我的hosts-entry阻止nginx解析url,并以无限重定向循环结束。我试图自己查找cdn-ip,但这没效果。我能做什么或做错什么?是否有更简单的方法来拦截特定的网址?

我正在使用Windows 7。

1 个答案:

答案 0 :(得分:1)

使用resolver参数。 Nginx将直接使用解析器DNS服务器,跳过/etc/hosts

location /flash {
    resolver 8.8.8.8 8.8.4.4;
    rewrite ^.*image1.png /image1.png;
    rewrite ^.*image2.png /image2.png;
    rewrite ^.*image3.png /image3.png;
    proxy_pass http://static.cdn.example.com;
}

我在这里将DNS设置为Google's public DNS servers,但您可以随意使用自己想要的DNS。