我试图让以下代码起作用:
location = /test-site/wp-login.php {
allow 192.168.0.56;
include /etc/nginx/fastcgi_params;
fastcgi_pass php;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/test-site.com/html$fastcgi_script_name;
deny all;
}
问题是,由于Wordpress上的多站点配置,需要执行3次重写才能到达正确的子站点。即使有了重写,上面的块也不起作用,因为重写它会剥离/ test-site / part。
相反,它匹配它并使用此nginx配置:
location = /wp-login.php {
#allow 192.168.0.0/16;
allow 192.168.0.56;
include /etc/nginx/fastcgi_params;
fastcgi_pass php;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/test-site.com/html$fastcgi_script_name;
deny all;
}
我已经成功地将重写更改为ignore / test-site /并保留它,但随后它将$ fastcgi_script_name变量更改为/var/www/site.com/html/test-site/ wp-login和/ test-site /目录不存在,因为它实际上是一个子网站。
如果我取出$ fastcgi_script_name变量并硬编码/var/www/site.com/html/wp-login.php代替它,它会让我进入该网站,但它没有设置变量返回到正确的值以查找图像或样式文件。
任何人都有这方面的经验吗?我基本上试图允许每个人在一个子网站上访问wp-login.php,但是在我的wordpress环境中阻止他们访问任何其他子网站。