Nginx - PHP-скрипт для защиты паролем - PullRequest
1 голос
/ 30 ноября 2010

Как я могу защитить паролем один php-скрипт в Nginx.Я использую nginx в качестве веб-сервера и перехожу к php-fastcgi.Я не могу заставить блоки местоположения вести себя как положено.

Вот фрагмент того, что я пытаюсь.

location /admin\.php$ {
    auth_basic "Valid User Required";
    auth_basic_user_file /etc/nginx/http-auth;
}
location ~\.php$ {
    root /var/www/nginx/vhosts/site;
    include /etc/nginx/fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass phpfcgi;
}

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Первый выпуск:

Вы соответствуете строке префикса вместо регулярного выражения:

  1. Строка префикса соответствует буквально.
  2. Даже если строка префикса совпадает, поиск продолжается с помощью регулярного выражения ниже (~\.php$). Если это совпадает, совпадение строки префикса игнорируется.

Решение проблемы № 1:

Добавьте ~ для сопоставления с регулярным выражением: ~/admin\.php$.

Второй выпуск:

Теперь, когда ваш блок совпадает, вы хотите передать php-скрипты внутри него в fastcgi, иначе они будут использоваться как текстовые файлы без разбора.

Решение проблемы № 2:

Вложите блок местоположения ~\.php$ внутри блока местоположения ~/admin\.php$, чтобы получить конечный результат, показанный ниже:

location ~/admin\.php$ {
    auth_basic "Valid User Required";
    auth_basic_user_file /etc/nginx/http-auth;
    location ~\.php$ {
        root /var/www/nginx/vhosts/site;
        include /etc/nginx/fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass phpfcgi;
    }
}
location ~\.php$ {
    root /var/www/nginx/vhosts/site;
    include /etc/nginx/fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass phpfcgi;
}

Справка:

См. Этот пост , ответ о приоритете блоков местоположения и Nginx docs по теме.

0 голосов
/ 01 декабря 2010
location /admin\.php$ {
    auth_basic "Valid User Required";
    auth_basic_user_file /etc/nginx/http-auth;
+    root /var/www/nginx/vhosts/site;
+    include /etc/nginx/fastcgi_params;
+    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
+    fastcgi_pass phpfcgi;
}

Может быть, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...