Я использую nginx / 1.18.0 (Ubuntu)
на машина Ubuntu 20.04.1 LTS
.
У меня запущен проект laravel
и phpmyadmin
.
Мой файл / etc / nginx / sites-enabled / example-application
выглядит следующим образом:
server {
listen 80;
server_name http://78.46.214.238/;
root /var/www/demo_laravel_nlg-generation/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
# phpMyAdmin:
location /phpmyadmin {
root /usr/share;
index index.php;
}
# PHP files for phpMyAdmin:
location ~ ^/phpmyadmin(.+\.php)$ {
root /usr/share;
index index.php;
#fastcgi_read_timeout 300;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
Чтобы защитить свой веб-интерфейс phpmyadmin, я думал заблокировать определенные страны или даже регионы или разрешить только определенные IP-адреса от доступа к моему маршруту \ phpmyadmin
, однако мои веб-приложения по-прежнему должны быть доступны для всех.
Есть предложения, как это сделать, в моем файле / etc / nginx / sites-enabled / example-application
?
Я очень благодарен за ваши ответы!
Для разрешения просто добавьте это в ваш /etc/nginx/sites-enabled/example-application
allow allowed.public.ip.here;
deny all;
allowed.public.ip.here
можно изменить на IP (пример 1.1.1. 1
) или IP класс подсети (пример 1.1.0.0/16
для блокировки IP диапазона от 1.1.0.0 до 1.1.255.255). пример:
location ~ ^/phpmyadmin(.+\.php)$ {
allow 1.1.0.0/16;
deny all;
root /usr/share;
index index.php;
#fastcgi_read_timeout 300;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
Для блокировки определенных стран, вам нужен GeoIp модуль. Но я не рекомендую его использовать, так как он влияет на производительность сервера с низкой спецификацией. Но если вы хотите, просто установите Geo IP DB на ваш Ubuntu, используя следующую команду;
apt-get install geoip-database libgeoip1
а затем добавьте это в ваш конфиг:
geoip_country /usr/share/GeoIP/GeoIP.dat;
map $geoip_country_code $allow_visit {
default yes;
US no;
CA no;
}
выше пример для блокировки США и Канады.
Для блокировки региона/континента вы можете использовать новую БД GeoIP, вы можете выполнить эти шаги, но я еще не тестировал это