Термины по теме: NGINX, веб-сервер
Данная возможность обеспечивается модулем ngx_http_access_module. Как правило, он входит в стандартную установку.
В настройке виртуального домена:
location / { deny 192.168.0.15; allow 192.168.0.0/24; allow 2001:0ab3::/32; deny all;}
* в данном примере мы разрешаем доступ для всех компьютеров сети 192.168.0.0/24 (за исключением 192.168.0.15) и компьютеру с адресом ipv6 2001:0ab3::. Остальным доступ запрещен.
Если мы хотим сделать ограничение не для конкретного сайта, а для всего nginx (всех сайтов), то прописываем настройки в общем конфигурационном файле секции http:
vi /etc/nginx/nginx.conf
http { … deny 192.168.0.15; allow 192.168.0.0/24; allow 2001:0ab3::/32; deny all; …}
После перезапускаем NGINX одной из команд:
systemctl reload nginx
service nginx reload
Стоит отметить, что блокировать доступ по IP-адресу можно не только ко всему сайту, но и к определенным директориям, например:
location /install { allow 192.168.0.15; deny all;}
* в данном примере мы запрещаем доступ к папке install, но разрешаем устройству 192.168.0.15.
Самый правильный способ, настроить, чтобы NGINX слушал только на локальном адреса, например, listen 127.0.0.1:80;
Но если такой метод, по каким-либо причинам нам не подходит, делаем так:
location / { allow 127.0.0.1; deny all;}
В зависимости от определенного IP-адреса NGINX может выполнять различные действия, а не только запрет доступа. Например, перенаправление:
location / { … if ($remote_addr != 127.0.0.1) { return 301 https://$host$request_uri; } …}
* в данном примере мы перенаправляем всех посетителей по пути https://$host$request_uri, кроме запросов с IP-адреса 127.0.0.1.
Мы можем разрешить доступ по паролю ко всему сайту или конкретной странице (URL).
В конфигурационном файле …
а) для установки пароля на весь сайт:
server { …. auth_basic “HTTP Basic Authentication”; auth_basic_user_file htpasswd; ….}
б) для установки пароля на конкретную страницу:
server { …. location = /page7 { auth_basic “HTTP Basic Authentication”; auth_basic_user_file htpasswd; } ….}
в) для установки пароля на все вложенные страницы по URL /page7:
server { …. location /page7/ { auth_basic “HTTP Basic Authentication”; auth_basic_user_file htpasswd; } ….}
* где auth_basic указывает веб-серверу использовать обычную аутентификацию по логину и паролю; auth_basic_user_file задает путь хранения файла с паролями относительно папки nginx.
После настройки конфигурационного файла NGINX, генерируем хеш для пароля:
openssl passwd
* после ввода Enter необходимо дважды ввести желаемый пароль — на экран будет выведен хэш, который необходимо скопировать в буфер обмена.
Создаем файл с пользователями и паролями:
vi /etc/nginx/htpasswd
test:dzeEYeVIDk38.
* где test — логин; dzeEYeVIDk38. — результат команды openssl passwd.* Для создания связки логина пароля также можно воспользоваться online генераторами, например, на htaccesstools.com.
После перезапускаем NGINX:
location / { limit_rate 1000k;}
* в данном примере мы огрраничили пропускную способность канала до, примерно, 10 мбит.
location / { limit_rate_after 10m; limit_rate 1000k;}
* также ограничиваем скорость до 10 мбит, но после первых 10 Мб загрузки.
http { limit_conn_zone $binary_remote_addr zone=perip:10m; limit_conn_zone $server_name zone=perserver:10m; limit_req_zone $binary_remote_addr zone=dynamic:10m rate=5r/s; … server { … location / { limit_conn perip 10; limit_conn perserver 100; } }}
* в данном примере мы создаем 3 зоны, размер каждой зоны — 10Мб; на один IP разрешено 10 подключений, но не больше 5 в секунду (rate=5r/s); общее число разрешенных соединений с сервером — 100.
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies