/ Nginx

Centos Nginx设置目录保护phpMyAdmin实例

开始之前

为了开始本指南,必须满足的第一个条件是在CentOS 服务器上安装OneinStack(LNMP)套件包。这是将用来运行phpMyAdmin的服务环境。如果您的服务器尚未安装OneinStack或者LNMP,请按照我们在CentOS 上安装LEMP的教程。

如果您已安装,服务器处于正常运行状态,则可继续。

创建加密的密码

ssh登录服务器后执行:

<code class="language-c">[root@dc ~]# openssl passwd

系统将提示您输入并确认您要使用的密码。该实用程序将显示密码的加密版本,如下所示:

<code class="language-c">[root@dc ~]# O5az.RSPzd.HE

复制密码,因为需要将其粘贴到我们将要创建的认证文件中。
现在,创建一个认证文件。文件名为 pma_pass 并把它放在Nginx的配置目录中:

<code class="language-c">[root@dc ~]# vi /usr/local/nginx/conf/pma_pass

在这个文件中,你只需要指定你想使用的用户名,后跟一个冒号(:),后面跟着你从该openssl passwd工具收到的加密密码。

我设定的用户名为:demo,但是您应该选择一个不同的用户名。本教程的文件如下所示:

<code class="language-c">[root@dc ~]# demo:O5az.RSPzd.HE

完成后保存并关闭文件。

配置Nginx文件

现在,我们准备修改我们的Nginx配置文件。在你的文本编辑器中打开这个文件:

<code class="language-c">[root@dc ~]# vi /usr/local/nginx/conf/nginx.conf

在这个文件中,我们需要添加一个新的代码块:

<code class="language-c">server {
    . . .

    location ~ [^/]\.php(/|$) {
      include fastcgi.conf;
    }

    #phpMyAdmin目录保护
    location /phpmyadmin {
    }

    . . .
}

然后我们需要使用一个指令 auth_basic_user_file 来指向我们的Web服务器到我们创建的认证文件。Nginx会提示用户输入验证信息,并检查输入的值是否与指定文件中的值匹配。

完成后,文件应该是这样的:

<code class="language-c">server {
    . . .

    location ~ [^/]\.php(/|$) {
      include fastcgi.conf;
    }

    #phpMyAdmin目录保护
    location /phpmadmin {
        auth_basic "Admin Login";
        auth_basic_user_file /usr/local/nginx/conf/pma_pass;
    }

    . . .
}

完成后,保存并关闭文件。
要验证我们的目录加密,我们必须

重新启动Nginx

<code class="language-c">[root@dc ~]# nginx -t && service nginx restart

现在,通过浏览器访问我们的phpMyAdmin位置(如果您已经使用phpMyAdmin,可能需要清除缓存或使用其他的浏览器访问),会提示您输入添加到 pma_pass 文件中的用户名和密码:http://IP/phpmyadmin

一旦通过认证,将跳转致正常的 phpMyAdmin 登录页面。除了增加的安全优势之外,这个额外的保护层将有助于保持您的MySQL日志清除身份验证尝试。

Centos Nginx设置目录保护phpMyAdmin实例
Share this