最近一直在学习Hugo,一个静态网站生成器,用他搭建了公司的业务手册,导出了HTML格式的网站,放在阿里云的虚拟主机上,觉得还是需要有一个访问限制,只让公司内部的人看,所以搜索了很多网页后,总结了一个如何加密静态网页文件的方法,主要用的是apache
和.htaccess
文件,具体方法如下:
判断主机程序
虚拟主机有很多种,作者的方法目前只在阿里云的apache
虚拟主机中试验成功,由于没有nginx
的虚拟主机,暂未尝试,如果有试过的朋友,欢迎留言告知。 新建一个名为test.php
的文件,上传至网站的根目录,一般是htdocs
,www
,或是wwwroot
。
<?php
echo "Path: " . getcwd();
echo "<br>";
echo "Software: " . $_SERVER['SERVER_SOFTWARE'];
phpinfo();
访问http://IP地址或绑定的域名/test.php
后,返回的结果一般为:
Path: /data/home/qxu11924/htdocs
Software: Apache
其中Path
代表了这个文件的绝对地址
,Software
代表了WEB服务器使用的软件。
.htpasswd设置
为了确保安全,我们不应该使用明文密码,但是虚拟主机又没有ssh
权限,这里我们可以利用一个名为 Htpasswd Generator – Create htpasswd 的网站进行生成。 在Username
中输入用户的登录名称(如“user”),并在Password
中填写希望用户使用的密码(如“user123”)
点击Create .htpasswd file
生成字符串,会得到如下界面:
新建一个名为.htpasswd
的文件,将网页中的字符串 user:$apr1$APyghgLT$DiWsvwYNHrO1CGzrNeg5p/
复制到文件内,保存。
.htaccess设置
新建一个名为.htaccess
的文件,内容如下:
AuthUserFile /data/home/qxu11924/htdocs/.htpasswd
AuthType Basic
AuthName "Restricted Area"
Order Deny,Allow
Deny from all
Require valid-user
Satisfy any
上面AuthUserFile
的值代表密码文件存储的位置,也就是我们第一个步骤中Path
后面的值,然后加上.htpasswd
的文件名。
上传文件
将保存好的三个文件通过FTP软件上传至虚拟主机中需要加密的目录中,访问网站后会出现如下窗口:
输入密码后即可正常访问网站。 当然,这只是一种比较简单的加密方式,对于一些比较敏感的数据,还是推荐采用更高级的加密,或者尝试CMS软件来搭建。