0

这似乎不起作用:

server_name blabla.bla;    
    location ~* (wp-comments-posts|wp-login)\.php$ {
            if ($http_referer !~ ^(http://$servername) ) {
            return 405;
            }
     }

尽管

server_name blabla.bla;    
    location ~* (wp-comments-posts|wp-login)\.php$ {
            if ($http_referer !~ ^(http://blabla.bla) ) {
            return 405;
            }
     }

工作得很好。这是预期的吗?如果是,为什么?还是我在这里做错了什么?

4

2 回答 2

1

正则表达式是在读取配置时编译的,因此它们不能包含变量。

另请注意:

于 2014-02-07T13:40:14.523 回答
0

如果你有你可能喜欢这个的referer 模块,这将只允许当前的服务器名称成为有效的referrer。所有其他人将返回 405 错误。

        location ~* (wp-comments-post)\.php$ {
            valid_referers server_names;
            
            if ( $invalid_referer ) {
                    return 405;
            }

            ### Do your stuff here
              
        }
于 2020-10-06T09:39:27.963 回答