这是我的 WordPress 网站的基本配置。
server {
root /var/www/site;
listen *****;
server_name *****;
include basics.conf;
}
一旦我添加位置部分以限制对 WP 登录的访问,wp-login.php 文件就会发送到浏览器,而不是作为 php 执行。我有
server {
root /var/www/site;
listen *****;
server_name *****;
include basics.conf;
location ^~ /wp-login.php {
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
我尝试在 auth_ 设置后复制 basics.conf 中的内容,但也没有成功。我的位置 / 也在我的 basics.conf 中配置,因为我将它用于所有 php 站点。
server {
root /var/www/site;
listen *****;
server_name *****;
include basics.conf;
location ^~ /wp-login.php {
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/.htpasswd;
index index.html index.htm index.php;
allow all;
if (-f $request_filename) {
break;
}
if (!-f $request_filename) {
rewrite ^/(.+)$ /index.php last;
break;
}
}
}
这是我的 basics.conf
location / {
index index.html index.htm index.php;
allow all;
if (-f $request_filename) {
break;
}
if (!-f $request_filename) {
rewrite ^/(.+)$ /index.php last;
break;
}
}
include php-fastcgi.conf;
这是我的 php-fastcgi.conf
location ~ \.php$ {
try_files $uri =404;
fastcgi_intercept_errors on;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
那么,如何才能让我的登录信息受到 auth 保护,同时又能将其解析为 php 而不是发送到浏览器呢?