Nginx Password Protect Загрузки каталогов Исходный код
Я пытаюсь защитить паролем страницу входа в WordPress на моем сервере Nginx. Когда я перехожу на http://www.example.com/wp-login.php, это вызывает приглашение "Требуется аутентификация" (не страница входа в WordPress) для имени пользователя и пароля. Однако, когда я ввожу правильные учетные данные, он загружает исходный код PHP (wp-login.php) вместо отображения страницы входа в WordPress.
Разрешение для моего файла htpasswd установлено на 644.
Вот директивы, о которых идет речь, в блоке сервера файла конфигурации моего сайта:
location ^~ /wp-login.php {
auth_basic "Restricted Area";
auth_basic_user_file htpasswd;
}
Кроме того, вот все содержимое моего файла конфигурации (включая четыре строки выше):
server {
listen *:80;
server_name domain.com www.domain.com;
root /var/www/domain.com/web;
index index.html index.htm index.php index.cgi index.pl index.xhtml;
error_log /var/log/ispconfig/httpd/domain.com/error.log;
access_log /var/log/ispconfig/httpd/domain.com/access.log combine$
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location /stats/ {
index index.html index.php;
auth_basic "Members Only";
auth_basic_user_file /var/www/web/stats/.htp$
}
location ^~ /awstats-icon {
alias /usr/share/awstats/icon;
}
location ~ \.php$ {
try_files /b371b8bbf0b595046a2ef9ac5309a1c0.htm @php;
}
location @php {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/lib/php5-fpm/web11.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
}
location / {
try_files $uri $uri/ /index.php?$args;
client_max_body_size 64M;
}
location ^~ /wp-login.php {
auth_basic "Restricted Area";
auth_basic_user_file htpasswd;
}
}
Если это имеет какое-то значение, я использую Ubuntu 14.04.1 LTS с Nginx 1.4.6 и ISPConfig 3.0.5.4p3.
1 ответ
Позвольте мне перевести текущий конфиг. Всякий раз, когда запрос браузера /wp-login.php
, запрос соответствует только разделу location ^~ /wp-login.php
, не включая вашу конфигурацию php-fpm. Итак, nginx просто применяет auth_basic, а затем выплевывает исходный код wp-login.php, потому что nginx не может его проанализировать.
Решением является добавление раздела php-fpm следующим образом
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/lib/php5-fpm/web11.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
внутри вашего location ^~ /wp-login.php
директивы.
Источник: Защита Wordpress Вход в Nginx