在WordPresspipe理员,我有nginx的基本http身份validation通过使用这里面的nginxconfiguration:
location ^~ /wp-login.php { auth_basic "Restricted Area: WordPress"; auth_basic_user_file /etc/nginx/wp.htpasswd; include /etc/nginx/fastcgi.conf; fastcgi_pass unix:/var/run/php5-fpm.sock; }
现在这个工作,但我需要添加一个排除它为wp-login.php?action=postpass
我从这篇文章中学到了nginx如何select使用哪个位置块来提供特定的请求。 ^~被用来覆盖我们可能有的任何规则,我想我需要指定一个正则expression式规则和一个确切的规则,它应该做所需的工作。
这对我来说是最有意义的,但它不起作用:
location = /wp-login.php?action=postpass { include /etc/nginx/fastcgi.conf; fastcgi_pass unix:/var/run/php5-fpm.sock; } location ~* /wp-login.php { auth_basic "Restricted Area: WordPress"; auth_basic_user_file /etc/nginx/wp.htpasswd; include /etc/nginx/fastcgi.conf; fastcgi_pass unix:/var/run/php5-fpm.sock; }
另外,尝试其他随机组合,但没有运气。 值得一提的是,当请求url不是wp-login.php或者URL中的任何东西,除了?action=postpass
请指教! 提前致谢!
像这样的东西应该工作
set $shouldauth "Restricted Area: WordPress"; if ($arg_action ~* postpass) { set $shouldauth off; } location ~* /wp-login.php { auth_basic $shouldauth; auth_basic_user_file /etc/nginx/wp.htpasswd; include /etc/nginx/fastcgi.conf; fastcgi_pass unix:/var/run/php5-fpm.sock; }