通过IP限制对Nginx上的文件和目录的访问
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过IP限制对Nginx上的文件和目录的访问相关的知识,希望对你有一定的参考价值。
我正在尝试使用nginx上的IP限制来锁定对WP-admin的访问。以下似乎阻止wp-admin,但不阻止wp-login.php
这是一个开始,因为它将阻止任何人能够从任何其他IP登录,因为登录后您被重定向到受限制的wp-admin。但是,它们仍然可以进入标志形式,理论上仍然可能受到暴力攻击的影响。
server {
listen 80;
server_name website.com www.website.com dev.website.com;
location / {
root /var/www/html/website.com/;
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$args;
}
location ~ .php$ {
root /var/www/html/website.com/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ ^/(wp-admin|wp-login/.php) {
root /var/www/html/website.com/;
index index.php index.html index.htm;
allow 123.123.123.123/32;
deny all;
}
}
如果您修复了上下文,则可能会解决此问题。而不是正斜杠在.php之前做反斜杠
location ~ ^/(wp-admin|wp-login.php) {
allow 123.123.123.123/32;
deny all;
}
不是一个完美的解决方案,但我现在正在使用它:
server {
listen 80;
server_name website.com www.website.com dev.website.com;
root /var/www/html/website.com/;
error_page 403 404 500 502 503 504 = /server_error.php;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location = /wp-login.php {
allow 123.123.123.123/32;
deny all;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
这将使每个人都出局,但不会掩盖wp-admin存在的事实。如果有人要导航到wp-admin,他们会被重定向到受限制的wp-login.php。
整理了一下。
我知道这有点老了,但你的回答对我有所帮助,而且我已经改进了。所以对于其他人来说,我认为这个问题实际上很常见。对我来说,Nginx只是阻止CSS文件。
我相信这个问题是由Nginx首次看到它的一个php文件引起的,因此在它到达location ~ .php$ {}
之前在location ~ ^/(wp-admin|wp-login.php) {}
中处理它
所以我这样做了,首先在location ~ .php$ {}
上面添加:
location = /wp-login.php{
allow 12.345.6.7; #example IP address
deny all;
fastcgi_index index.php;
include fastcgi_params;
}
这将阻止访问qazxsw poi这是伟大的,但就像你说它不会阻止qazxsw poi所以只需跟进添加wp-login.php
下面的其他块
wp-admin
现在,如果你不是来自IP location ~ .php$ {}
那么你就无法访问location ~ ^/(wp-admin|wp-login.php) {
allow 12.345.6.7 #example IP address
deny all;
}
或12.345.6.7
现在(2018年)Wordpress将wp-admin自动重定向到wp-login。因此,仅仅禁用/wp-login.php就足够了:
wp-admin
只需将它放在默认的“location` .php $”块之后
以上是关于通过IP限制对Nginx上的文件和目录的访问的主要内容,如果未能解决你的问题,请参考以下文章
nginx 限制目录访问为403,允许其它访问ip访问怎么变成404