【问题标题】:Ubuntu 14 + Nginx + PHPMyAdmin : how can I restrict access by IP address?Ubuntu 14 + Nginx + PHPMyAdmin:如何通过 IP 地址限制访问?
【发布时间】:2015-10-21 21:45:07
【问题描述】:

我试过谷歌搜索,但似乎找不到 Nginx 的答案。如何通过 IP 地址限制对 PHPMyAdmin 的访问?

【问题讨论】:

    标签: ubuntu nginx 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 的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-06
      • 1970-01-01
      • 2013-01-18
      • 2015-11-30
      • 1970-01-01
      • 1970-01-01
      • 2010-09-30
      • 2021-12-16
      相关资源
      最近更新 更多