nginx - 限制对https的直接URL访问,但可以从http重定向

时间:2015-02-18 22:58:32

标签: security http nginx https


正在寻找类似的问题,但找不到合适的解决方案。

在nginx web服务器上我有网站监听443,我不想从网址访问(如果我输入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:     location~ ^ /([a-zA-Z0-9 = \?] +)$ {

    valid_referers server_names http://ip.of.ser.ver;
    if ($invalid_referer) {
        return 403;
    }

    rewrite ^/(.*)$ / break;
}

1 个答案:

答案 0 :(得分:2)

此语法应该有效:

valid_referers server_names http://your.domain;
if ($invalid_referer) {
    return 403;
}

但是你想用这个来完成什么? referer头很容易注入请求。如果这是一项安全措施,那么它显然是一种非常不安全的措施。