nginx 反向代理 获取三方图片时的referer问题

使用第某网站做一个网页,但想网址显示成自己的,又不想用301,于是使用nginx 反代理。
1.在使用nginx 反代理一个网页时,遇到被代理的网站有一个指向cdn的图片,防盗链的问题。
nginx 设置如下。

clipboard.png

2.查看被代理的网页发现:
<section class="page page-1 backgroundSize0" id="1092" style='background-image: url("http://img.weiye.me/zcimgdir/thumb/t_1465709656575cf458d71b6.jpg");

这个这个图片会带上我反代的网址作为referer.导致图片403,
经测试,如果不带referer,或者referer是被代理的url的话,图片是可以获取的。
clipboard.png

clipboard.png

所以问题来了,这个该怎么设置nginx呢?

阅读 13.3k
3 个回答

跟 nginx 没关系,这个请求根本就不过你的 nginx,你控制不了。

找到了一些答案.
1.因为html不太熟悉,目前查下来就是被代理的网页,请求了第三方网站图片,该网站会校验referer,但可以允许referer为空。
禁止请求时带上referer,问题就解决了。
Referrer Policy这里看到referrer的介绍,
嗯嗯,referer是可以禁止的,那我们就可最简单的,全局禁止referer
2.所以到这里

问题就是在nginx取回的reponse中加一个
<meta name="referrer" content="no-referrer">

3.这里
how-to-add-a-response-header-on-nginx-when-using-proxy-pass看到一文章,

4.所以现在就是用add_header或者more_set_header加一个禁止referrer,
对html不太熟,该怎么加?

新手上路,请多包涵

你好,受你的启发我解决了这个问题,在nginx中配置相应头Referrer-Policy即可控制浏览器不携带Referrer

location ^~ /c/ {

add_header Referrer-Policy no-referrer;
proxy_pass https://xxx/;

}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题