Nginx
只有某些國家可以訪問特定路線
我
nginx/1.18.0 (Ubuntu)
在Ubuntu 20.04.1 LTS
機器上使用。我有一個
laravel project
和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; } }
為了保護我的 web phpmyadmin 界面,我想阻止某些國家甚至地區,或者只允許特定 IP 訪問我的
\phpmyadmin
路由,但是我的 web 應用程序仍然應該可供所有人訪問。任何建議如何在我的
/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 模組。但我不推薦它,因為它會影響低規格伺服器的性能。但是,如果您只想使用以下命令在 Ubuntu 上安裝 Geo IP DB;
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 數據庫,您可以按照以下步驟操作,但我尚未對其進行測試