Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security nginx-限制对https的直接URL访问,但可以从http重定向_Security_Http_Nginx_Https - Fatal编程技术网

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

Security nginx-限制对https的直接URL访问,但可以从http重定向,security,http,nginx,https,Security,Http,Nginx,Https,正在寻找类似的问题,但找不到合适的解决方案 在nginx web服务器上,我有一个在443上侦听的网站,我不想从url访问它(如果我键入,则给出403),但只有当它从80端口重定向时才可以接受,在80端口上进行了正确的登录 我阅读了有关有效的\u推荐人的信息,并尝试: valid_referers none blocked server_names localhost ip.of.server; if ($invalid_referer) {


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

在nginx web服务器上,我有一个在443上侦听的网站,我不想从url访问它(如果我键入,则给出403),但只有当它从80端口重定向时才可以接受,在80端口上进行了正确的登录

我阅读了有关有效的\u推荐人的信息,并尝试:

valid_referers none blocked server_names
        localhost ip.of.server;
        if ($invalid_referer) {
            return 403;
        }

因为我不确定什么是正确的语法,但是所有的都被完全忽略了

我做错了什么?这是解决这个问题的好方法吗

谢谢, 米尔科

编辑: 解决方案是在重写之前放置有效的\u引用: 位置^/([a-zA-Z0-9=\?]+)${


此语法应适用于:

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

但是你想用它来实现什么呢?referer头很容易插入到请求中。如果这是一个安全措施,那么它显然是一个非常不安全的措施。

我读到referer头很容易伪造,但如果它能阻止99%的人直接从url访问,这并不是一个问题。问题是这段代码仍然存在g被忽略,或者我的浏览器正在缓存…我仍然可以直接从url访问,并在登录后从php重定向。这应该可以工作。检查浏览器的网络控制台,看看浏览器是否在请求标头中发送Referer标头。它现在可以工作了,在Referer检查之前,我有一个重写规则。当我切换它时,现在一切正常你想要一些奇怪的东西。登录http并重定向到https与你应该做的完全相反。好的,谢谢你的提示,我可以尝试在这些之间切换,然后我应该如何限制直接http url访问?
    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;
}