nginx重写url问题需要帮助

时间:2011-06-07 14:45:01

标签: proxy nginx rewrite

我是nginx的新手,我安装了php(使用端口8888)和nginx(使用端口80),我有一个静态的html页面,如www.aa.com:8888/news/html/about/aboutus /index.html,现在我想使用www.aa.com/test/aboutus.html访问它,当这样做时,浏览器中的URL不应该改变。这该怎么做?

我尝试了一些方法,但浏览器中的链接只会重定向到新的URL字符串...

我的示例配置在nginx的conf文件中,如下所示:

    location ^~ /test/aboutus.html {
        proxy_pass   http://127.0.0.1:8888;
        proxy_redirect   default;
        rewrite ^/test/aboutus.html$ /news/html/about/aboutus last;
        break;
    }

非常感谢!

1 个答案:

答案 0 :(得分:1)

没有其他人回答,所以我想我会试一试。

根据the documentation for proxy_pass

  

一个特例是在proxy_pass语句中使用变量:未使用请求的URL,您自己负责自己构建目标URL。

因此,如果您可以在其中获取变量,则只需提供完整的网址即可,而不必担心rewrite。像这样:

location /test/aboutus.html {
    proxy_pass $scheme://127.0.0.1:8888/news/html/about/aboutus;
}

我没有测试过这个(抱歉)。

[更新]

还有一个想法:

location /test/aboutus.html {
    proxy_pass $scheme://127.0.0.1:8888/news/html/about/aboutus;
    proxy_redirect $scheme://127.0.0.1:8888/news/html/about/aboutus $scheme://$host/test/aboutus.html
}

我们的想法是将回复中的Location标头映射回您希望客户端在浏览器中显示的内容。这就是proxy_redirect的用途(尽管我认为“默认”设置应该有效)。