Nginx referer 方面问题请教大神

2022-07-31 23:03:19 +08:00
 HappyDay123
valid_referers none blocked;
if ($invalid_referer) {
return 403;
}

#上面代码表示 referer 为空时允许访问。所有带 referer 的请求则返回 403

我现在想所有带 referer 的请求允许,referer 为空时返回 403 应该怎么写呢?

折腾了很久,实在不知怎么写,所以过来请教大神
2126 次点击
所在节点    NGINX
12 条回复
ysc3839
2022-07-31 23:07:43 +08:00
HappyDay123
2022-07-31 23:59:59 +08:00
这论坛比 loc 还凉啊
V1Eerie
2022-08-01 00:20:36 +08:00
@HappyDay123 1 楼文档都发出来了,看一下就能解决的问题应该不需要再讨论了吧。
HappyDay123
2022-08-01 00:37:50 +08:00
@V1Eerie 档案所述的我已经写在了上面………
Steps
2022-08-01 04:14:53 +08:00
if (!$invalid_referer) {
return 403;
}

难道是这个?
LcDraven
2022-08-01 11:29:13 +08:00
if ($http_referer = "") { return 403; }
xx3122
2022-08-01 12:15:53 +08:00
楼上正解
HappyDay123
2022-08-01 23:46:16 +08:00
@LcDraven 感谢回复。我也这样尝试了,referer 不为空也返回了 403 。我想达到的目的是比如一个图片链接嵌入到任意网页能打开。浏览器直接打开图片则 403 。
fyw321451
2022-08-02 05:45:08 +08:00
@HappyDay123 没意义
ryd994
2022-08-02 05:48:16 +08:00
你的注释是错的
valid_referers none blocked; 的意思是如果没 referer 或者是 invalid 的话就 return 403
建议你在 log 里添加$http_referer 变量,或者 tcpdump 抓包,录下来看看实际收到的 referer 是什么

单论你的问题的话,$http_referer = “” 也可以满足要求。
LcDraven
2022-08-02 10:14:08 +08:00
@HappyDay123 那应该是前端的事,我不太懂
HappyDay123
2022-08-02 12:15:05 +08:00
@ryd994 我是做图床的,这个功能很重要。另外一位大佬已经给出了这个代码$http_referer = “”,实测后带 referer 的请求也返回了 403

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/869828

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX