2012/5/6 yankuncheng <yankuncheng@gmail.com>:
> 测试可以知:
> nginx做代理服务器的时候,如果遇到http301,302不会做任何特殊处理。
> 现在我希望通过配置,实现在nginx内部完成跳转。
nginx 自身并没有提供 301/302 到"内部跳转"转换的直接支持。从语义上讲,301/302
跳转可能会跳至其他域名,这本身也不是"内部跳转"所能实现。同时 301/302 跳转会导致浏览器地址栏中的当前 URI
发生变化,而"内部跳转"则不会。
如果你坚持要进行转换,你需要自己实现相应的约束和逻辑。可以考虑通过第三方模块 ngx_lua 来实现:
http://wiki.nginx.org/HttpLuaModule
> max-redirects = 4
> #最大跳转次数
> redirects = on
> #打301,302跳转
> redirects-content-type = (video*)|(image*) #只对视频、图片对自动跳转。
> 这里有3个细节:
> 1.跳转可能用到相对路径,需要转换。
> 2.可能循环跳转,需要提示。
> 3.如果是html、css、js等资源,跳转可能会导致页面的相对路径出错;所以只对视频、图片做自动跳转处理。
> 希望获得您的指导和帮助,谢谢。
同时抄送给 openresty 邮件组:https://groups.google.com/group/openresty/
欢迎加入这个邮件组讨论 nginx 和 openresty 的相关问题。
Regards,
-agentzh