我的目标是将Nginx服务器的所有非/
请求都转换为/?data={uri-path}
。
我正在尝试以下配置:
server {
server_name example.com;
listen 80;
location = / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
alias /home/....;
expires $expires;
}
location / {
return 301 http://example.com/?data=$request_uri;
}
}
问题是我以这样的URI结尾:http://example.com/?data=?data=?data=?data=?data=?data=
浏览器抱怨很多重定向。
根据文档,location =
应该具有优先权,但似乎我做错了事。
感谢您的反馈。
答案 0 :(得分:0)
这取决于location = /
的工作。
如果它指向一个目录,并且该目录包含一个index.html
文件,则Nginx将在内部重写URI,然后搜索location
来处理该修改后的请求。
这将导致重定向循环。
您可以通过添加另一个location
块来处理最终URI来打破循环,例如:
location = /index.html { root ...; }
如果location = /
块用于代理请求,则您缺少proxy_pass
语句。