我完全被nginx重写的行为所困扰。我有以下2个位置块-第一个只是重写,以便调用第二个。
location /alt/digest/rewrite {
rewrite /alt/digest/rewrite http://$server_name/digest/wms break;
}
location /digest/wms {
...
}
但是当我按下http://server_name/alt/digest/rewrite时,我总是在curl应用程序上获得以下信息
<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>nginx/1.6.2</center>
</body>
</html>
任何帮助,将不胜感激。
最佳答案
实际上,在rewrite documentation中对此行为进行了很好的描述:
如果替换字符串以“ http://”或“ https://”开头,则处理将停止,并将重定向返回给客户端。
删除方案和主机部分,仅改写为绝对路径。
还要将break
替换为last
:
持续
停止处理当前的ngx_http_rewrite_module指令集,并开始搜索与更改后的URI相匹配的新位置;
rewrite /alt/digest/rewrite /digest/wms last;
关于nginx - NGINX重写总是返回302,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28789175/