我们使用 Apache 2.4 作为代理,我试图根据 IP 列表阻止对 wp-login.php 的访问。在我的 VHost 中,我有:
<Location />
ProxyPass http://my_app_server/
ProxyPassReverse http://my_app_server/
</Location>
<FilesMatch "wp-login\.php|xmlrpc\.php|admin-ajax\.php">
Require all denied
Require ip 123.456.789
Require ip 567.890.123
</FilesMatch>
对于某些叛国罪,它仍然让每个人通过。
关于我的愚蠢在哪里影响这件事有什么想法吗?
提前致谢!
最佳答案
认为应该是这样的:
<FilesMatch "^(wp-login\.php)|(xmlrpc\.php)|(admin-ajax\.php)$">
甚至
<FilesMatch "^(wp-login)|(xmlrpc)|(admin-ajax)\.php$">
但是,这不适用于 ProxyPass。 ProxyPass 优先,因此 FileMatch 位被忽略。因此,这需要在应用程序服务器中完成,而不是在 Apache 中。您可以通过暂时删除 ProxyPass 指令来证明这一点,您会看到它被阻止。
可以使用 ModSecurity 来完成,但是为此安装可能有点过分(尽管 WAF 是保护应用程序服务器的好东西!)。
想不出任何其他方法来解决这个问题。
关于wordpress - Apache 2.4 - 通过 IP 限制对 wp-login.php 的访问不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32487034/