nginx - 限制直接 URL 访问 https 但可以从 http 重定向
nginx - restrict direct URL access to https but can be redirected from http
正在寻找类似的问题,但找不到合适的解决方案。
在 nginx 网络服务器上,我有一个网站在 443 上监听,我不想从 url 访问它(如果我输入 https://my.server/foo,给出 403),但只是如果它是从 80 端口重定向的,并且已经进行了正确的登录,则可以接受。
我阅读了 valid_referers 并尝试过:
valid_referers none blocked server_names
localhost ip.of.server;
if ($invalid_referer) {
return 403;
}
和
valid_referers server_names
localhost ip.of.server;
if ($invalid_referer) {
return 403;
}
因为我不确定什么是正确的语法,但都被完全忽略了。
我做错了什么,这是解决这个问题的好方法吗?
谢谢,
米尔科
编辑:
解决方案是在重写之前放置 valid_referers :
位置 ~ ^/([a-zA-Z0-9=\?]+)$ {
valid_referers server_names http://ip.of.ser.ver;
if ($invalid_referer) {
return 403;
}
rewrite ^/(.*)$ / break;
}
此语法应该有效:
valid_referers server_names http://your.domain;
if ($invalid_referer) {
return 403;
}
但是你想用这个完成什么? referer header 很容易注入到请求中。如果这是一种安全措施,那显然是一种非常不安全的措施。
正在寻找类似的问题,但找不到合适的解决方案。
在 nginx 网络服务器上,我有一个网站在 443 上监听,我不想从 url 访问它(如果我输入 https://my.server/foo,给出 403),但只是如果它是从 80 端口重定向的,并且已经进行了正确的登录,则可以接受。
我阅读了 valid_referers 并尝试过:
valid_referers none blocked server_names
localhost ip.of.server;
if ($invalid_referer) {
return 403;
}
和
valid_referers server_names
localhost ip.of.server;
if ($invalid_referer) {
return 403;
}
因为我不确定什么是正确的语法,但都被完全忽略了。
我做错了什么,这是解决这个问题的好方法吗?
谢谢, 米尔科
编辑: 解决方案是在重写之前放置 valid_referers : 位置 ~ ^/([a-zA-Z0-9=\?]+)$ {
valid_referers server_names http://ip.of.ser.ver;
if ($invalid_referer) {
return 403;
}
rewrite ^/(.*)$ / break;
}
此语法应该有效:
valid_referers server_names http://your.domain;
if ($invalid_referer) {
return 403;
}
但是你想用这个完成什么? referer header 很容易注入到请求中。如果这是一种安全措施,那显然是一种非常不安全的措施。