В этой статье я приведу примеры ограничения доступа к файлам или директориям по IP адресу или логину и паролю.
Полностью запретить доступ к конкретной директории можно так:
location ^~ /folder1/ {
deny all;
}
Несколько директорий можно указать так:
location ~* ^/(folder1|folder2)($|\/) {
deny all;
}
Или так:
location ^~ /folder1/ {
deny all;
}
location ^~ /folder2/ {
deny all;
}
Приведу пример как разрешить доступ конкретным IP адресам или сетям:
location ^~ /folder1/ {
allow 192.168.0.0/24;
allow 192.168.5.5;
allow 192.168.5.8/32;
deny all;
}
Ограничить доступ по логину и паролю можно так:
location ^~ /folder1/ {
auth_basic "Hello, please login";
auth_basic_user_file /etc/nginx/.htpasswd;
}
Генерируем пароль командой ниже (или например тут https://hostingcanada.org/htpasswd-generator):
openssl passwd
Допустим логин «admin», а пароль «ixnfo», после ввода команды выше, в зашифрованном виде пароль выглядит так — q7h194Y1SBgxo, теперь добавим его в файл .htpasswd:
admin:q7h194Y1SBgxo
Чтобы применить изменения в конфигурации, допустим если операционная система Ubuntu, необходимо выполнить команду:
service nginx reload
Или просто перезагрузим nginx:
service nginx restart
Перед применением конфигурации желательно ее проверить (так как в случае ошибок nginx не запустится):
nginx -t
Можно ограничивать доступ одновременно по IP адресам и по логину/паролю:
location ^~ /folder1/ {
allow 192.168.0.100;
deny all;
auth_basic "Hello, please login";
auth_basic_user_file /etc/nginx/.htpasswd;
}
Пример ограничения по логину/паролю для директории с php файлами:
location ^~ /folder1 {
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
auth_basic "Hello, please login";
auth_basic_user_file /var/www/.htpasswd;
}
Чтобы ограничить доступ например только для файлов php в директории «folder1»:
location ~* ^/folder1/.+\.php {
allow 192.168.0.100;
deny all;
}
Смотрите также мою статью:
Как настроить доступ по IP в nginx