开发BB平台小程序的时候,公告内容需要展示图片,但是图片地址访问时需要认证,然而微信没有一种可以修改图片访问请求的方法,所以只好反向代理一下了。
|
|
通过这个配置,可以把cookie放在GET请求中,然后让nginx获取请求中的cookie,并携带这个cookie向BB平台发起请求获得图片。
由于域名还配置了接口,不能全部用来代理。所以用/img路径用来代理图片,实现效果为通过https://example.com/img/bbcswebdav/xxxxx/xxx/xxx.jpg?cookie=xxx
可以携带Cookie获取到https://wlkc.ouc.edu.cn/bbcswebdav/xxxxx/xxx/xxx.jpg
的内容。
浅浅记录原理
当请求访问路径以/img开头的网址时,截取/img后的内容,并获取get请求参数中的cookie,给代理设置Cookie,并且将bb平台网址与截取的路径拼接,设置为代理地址。
这时候按道理已经可以了,**但是,bb平台获取的图片地址会通过301跳转。这种情况下,直接请求就无法处理。**需要开启proxy_intercept_errors,当状态码为301时交给handle_redirects处理。handle_redirects的功能就是获取跳转的location的值,截取新的地址,并跳转到上面的img地址,再进行代理。