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

ubuntu 14.04安装nginx+php

Nginx, django, gunicorn, ubuntu 14.04 (13: Permission denied) 同时连接到上游

Ubuntu 14.04 + nginx + php + mysql搭建

ubuntu 14.04 nginx