我完全被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/

10-14 00:45