问题描述
有一个请求,这个请求必定会返回一个301的请求。一般来说,就是浏览器去访问这个重定向后的链接,但是现在的情况是这个返回后的请求是内部链接,不能直接访问,并且这个301返回的location不是固定的。
现在我希望,通过nginx代理这个请求后,最终返回的是重定向之后的内容,浏览地地址不变。
问题出现的环境背景及自己尝试过哪些方法
- 试过
proxy_redirect
命令来修改301的location,但是因为获取不到最终的地址,所以也没用。 - 试过
rewrite
,但是问题同上。 - 准备尝试通过
lua
来获取301的location,再直接代理这个地址。还在尝试阶段。。。
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
其他
其实就是想代理seaweedfs
的文件,我希望能通过fid直接请求主节点,但是它会直接返回volume的地址,这个地址是隐藏的;这个又不是seaweedfs
的问题,所以也没在issue下问。。。
你期待的结果是什么?实际看到的错误信息又是什么?
我希望nginx内部就能解决。。。
谢谢大家
20190603更新
根据@Bug开发的回答,加上 return 301
location /img2/ {
return 301 $host$request_uri;
}
返回:
但是返回的还是本身,因为返回的location没有http://
,地址栏的url一直添加,最终导致414 Request-URI Too Large
。
说说最后采取的方法,利用lua脚本请求一次当前url,然后获取location,再代理。
采用的是openresty
nginx的conf文件:
本来想用set_by_lua方法的,但是不支持i/o所以用的rewrite模块,这里有解释 https://github.com/openresty/...
lua文件
差不多就这样,但是感觉有点麻烦,应该有更简单的方法。。。
最后谢谢 @Bug开发 的帮助