Nginx: разрешить доступ к папке только с локального хоста - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть папка с именем admin, которая находится в каталоге var/www/html.

Я хочу получить доступ к этой папке из общедоступного Интернета, т.е. разрешить доступ только с локального хоста.

Длячто

1) Создал файл whitelist-admin в каталоге sites-available и добавил следующее.

server{

location ~ /admin/.*\.php$ {
     allow 127.0.0.1;
     try_files $uri $uri/ /index.php;
     deny all;
  }

}

Когда я получаю доступ к <public-ip>/admin, я получаю 403 ошибку, носсылка <public-ip>/admin/index.php работает Я хочу ее отключить.

1 Ответ

0 голосов
/ 13 февраля 2019
server{

location = /admin { #its good to block the admin alone too
     allow 127.0.0.1;
     deny all;i
     try_files $uri $uri/ /index.php;
  }

location ^~ /admin/ { #block anything beggining with /admin/
     allow 127.0.0.1;
     deny all;
     try_files $uri $uri/ /index.php;
  }

location ~ \.php$ {
 include snippets/fastcgi-php.conf; 
#fastcgi_index index.php; 
# With php7.0-cgi alone: 
#fastcgi_pass 127.0.0.1:9000;
 # With php7.0-fpm: fastcgi_pass unix:/run/php/php7.0-fpm.sock; 
}


}

Эта конфигурация должна разрешать только локальные подключения и запрещать все остальные на любом административном URL.

С другой стороны, если вы когда-либо будете заблокированы с вашего компьютера, это может быть связано с тем, что вы делаетезапрашивать через ваш общедоступный ip, а не напрямую через localhost. (Например: если вы делаете перенаправление через Интернет, ваш ip будет ip сервера, а не localhost).

Это должно сработать, если это не так.т, может быть есть другое место, которое ловит соединение, а не это.Прокомментируйте, работает ли он или что не работает.

РЕДАКТИРОВАТЬ:

Источник, чтобы понять это: https://www.digitalocean.com/community/tutorials/understanding-nginx-server-and-location-block-selection-algorithms

^ ~ укажет, что это лучшее "~msgstr "в конфигурации это будет первая проверка после местоположения" = ".Это должно установить приоритет вашего / admin / местоположения над вашим местоположением .php.

Это должно работать.(наконец-то: D)

...