我是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;
}
非常感谢!
答案 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
的用途(尽管我认为“默认”设置应该有效)。