网上绝大多数讲的是使用来自apache的组件htpasswd来实现密码部分,实际上openssl(相信用到ssh的都安装有这个模块)就能够实现密码部分,而不需要额外再去apt-get。
这里演示的是为phpMyAdmin的登录页面增加一层身份认证,就像这样
一、生成加密过的密码
这一步是免不掉的,因为nginx必须使用crypt()函数将表单提交的密码加密后和存储的密码比对。
实际上不仅htpasswd能够对明文密码进行加密,openssl下的passwd命令也能够完成。
命令是:
接下来会提示输入密码,连续输入两次后就能得到加密后的密码了,如:
此时把加密的密码复制下来,供后面使用。
二、创建认证文件
后面在nginx设置中对眼身份认证,需要指定一个存有用户名和密码的文件,所以这里首先创建。
为防止出现权限问题,将文件创建到nginx配置目录下,文件名为pma_pass(可随意更改)
在文件中写入
其中demo即设置的验证用户名,可随意更改,不需要再次加密。
三、修改nginx配置文件
打开nginx配置文件(可能路径不一样)
定位到phpMyAdmin锁能访问到的那个server(如果是通过IP访问,即http://IP/phpmyadmin的话,就是在default_server中)
增加一个location,如:
在此location下填入认证提示,并指明认证文件路径
auth_basic 中字符串内容用在认证界面的提示中,如果不希望别人知道这个网页的用途的话,就写一个无关紧要的Admin Login咯。
四、重启nginx生效
重启nginx
接下来再去访问加上身份认证的网页时,就会出现
参考