@Omniverse

Как добавить HTTP Basic auth в nginx?

Как правильно назначить http basic auth на директорию и все файлы в ней в nginx.

Содержимое /etc/nginx/sites-available/default:
server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.php index.html index.htm index.nginx-debian.html;

        server_name 111.111.111.11;

        location / {
                try_files $uri $uri/ /index.php?$query_string;
        }

        location /admin {
            auth_basic "Admin Login";
            auth_basic_user_file /etc/apache2/.htpasswd;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                
                fastcgi_pass unix:/run/php/php7.3-fpm.sock;
        }

        location ~ /\.ht {
                deny all;
        }
}


Надо поставить авторизацию на директорию /var/www/html/admin
Проблема в том, что авторизация не работает, если обратиться к файлам в этой директории, например site.ru/admin/index.php

Как это исправить?
  • Вопрос задан
  • 1605 просмотров
Решения вопроса 1
deepblack
@deepblack
server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /var/www/html;
        index index.php index.html index.htm index.nginx-debian.html;
        server_name 111.111.111.11;
        location / {
                try_files $uri $uri/ /index.php?$query_string;
        }
        location ^~ /admin/ {
            auth_basic "Admin Login";
            auth_basic_user_file /etc/apache2/.htpasswd;
            location ~ \.php$ {
                    include snippets/fastcgi-php.conf;
                    fastcgi_pass unix:/run/php/php7.3-fpm.sock;
            }
        }
        location ~ /\.ht {
                deny all;
        }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы