Назад | Перейти на главную страницу

Включить аутентификацию Nginx для определенного URL

Я работаю с панелью управления, и мне нужно установить аутентификацию для доступа администратора.

Я уже создал пользователя и пароль, конфигурацию nginx следующим образом:

server {
listen 443 ssl;
server_name localhost;
root /usr/local/pannel/www;

gzip on;
gzip_http_version  1.1;
gzip_comp_level    5;
gzip_min_length    256;
gzip_proxied       any;
gzip_vary          on;

gzip_types
  application/atom+xml
  application/javascript
  application/json
  application/rss+xml
  application/vnd.ms-fontobject
  application/x-font-ttf
  application/x-web-app-manifest+json
  application/xhtml+xml
  application/xml
  font/opentype
  image/svg+xml
  image/x-icon
  text/css
  text/plain
  text/x-component;

ssl_certificate     /usr/local/svmstack/nginx/ssl/ssl.crt;
ssl_certificate_key /usr/local/svmstack/nginx/ssl/ssl.key;
ssl_session_timeout 6m;
ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers         HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;

index index.php;

include services/custom/legacy-master-before-php-location-443.conf;

location ~ \.php$ {
    include services/custom/legacy-master-inside-php-location-443.conf;
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_read_timeout 3600;
    fastcgi_pass unix:/usr/local/svmstack/fpm/socket/web.sock;
    fastcgi_index index.php;
    include fastcgi.conf;
    fastcgi_param HTTPS $https;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
include services/custom/legacy-master-after-php-location-443.conf;
}

Я мог бы просто добавить приведенный ниже код в location, однако в этом случае он запросит аутентификацию для всех файлов в /usr/local/pannel/www; папка.

auth_basic "Restricted";
auth_basic_user_file /usr/local/pannel/htpasswd;

Как я могу создать новое местоположение в том же ключе для определенного URL-адреса, и в этом случае файл находится по адресу: /usr/local/pannel/www/admin/login.php

Мне нужно, чтобы аутентификация запрашивалась только при доступе к этому файлу (login.php).

Определите место, требующее аутентификации

location /admin/login.php {
  auth_basic "Restricted";
  auth_basic_user_file /usr/local/pannel/htpasswd;

  # anything else required
}