Ubuntu 14 + Nginx + PHPMyAdmin:如何通过 IP 地址限制访问?
Posted
技术标签:
【中文标题】Ubuntu 14 + Nginx + PHPMyAdmin:如何通过 IP 地址限制访问?【英文标题】:Ubuntu 14 + Nginx + PHPMyAdmin : how can I restrict access by IP address? 【发布时间】:2015-10-21 21:45:07 【问题描述】:我试过谷歌搜索,但似乎找不到 nginx 的答案。如何通过 IP 地址限制对 phpMyAdmin 的访问?
【问题讨论】:
【参考方案1】:我想通了。我只需要像这样编辑我的默认文件:
sudo nano /etc/nginx/sites-available/default
然后像这样编辑文件:
location /phpmyadmin
allow 127.0.0.1;
deny all;
然后我重新启动以应用设置。
sudo service nginx restart
【讨论】:
/phpmyadmin/index.php 怎么样? 正如@TimMiller 提到的,这不会保护 /phpmyadmin/index.php 因为 *.php 位置指令将接收请求。这可以通过使用嵌套位置来解决,这意味着一些 fastcgi 配置行的重复。见:nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls 另请参阅此问题并回答类似问题:serverfault.com/questions/868776/… 正如@TimMiller 和@jeffmcneill 提到的那样,我遇到了这个问题(使用htpasswd 保护)。许多教程只是建议保护 /phpmyadmin 位置。但这显然还不够。您仍然可以访问index.php
甚至server_privileges.php
。它需要一个匹配~ phpmyadmin
的正则表达式子位置(到.php 位置),并将fastcgi
配置复制到其中以真正保护它。【参考方案2】:
geo $admin
default 0; 127.0.0.1 1;
location ~ \.php$
location ~ (/phpmyadmin/)
if ($admin = 0)
return 404;
## fastcgi parameters ##
## fastcgi parameters ##
请注意,第二个位置是嵌套的,并且是阻止 /phpmyadmin/index.php 脚本执行所必需的。
地理块根据 IP 地址设置 $admin 的值。
【讨论】:
以上是关于Ubuntu 14 + Nginx + PHPMyAdmin:如何通过 IP 地址限制访问?的主要内容,如果未能解决你的问题,请参考以下文章
Ubuntu 14 + Nginx + PHPMyAdmin:如何通过 IP 地址限制访问?
ubuntu 18.04 LTS 安装nginx-1.14.0
Nginx, django, gunicorn, ubuntu 14.04 (13: Permission denied) 同时连接到上游