在ubuntu上设置apache2的用户访问控制

需求

公司的产品文档, 我通过 markdown 进行撰写, 并使用 mdwiki 来查看和管理.

而一直以来, 也是通过布在公网上的一套 mdwiki 发布给开发同事看.

因为 mdwiki 是一个纯静态 wiki, 也没有什么访问控制的高级功能. 而且我们的产品也大体上处于初期, 所以, 也就敞开了放在公网上, 没有做什么控制.

后来领导了解此事后, 要求把公网的 wiki 下了, 主要考虑的就是访问控制的问题.

为了以后可以继续使用 mdwiki 发布文档, 我开始寻找访问控制的方案. 后来发现 apache 本身就有这个功能. 设置一下就可以用.

ubuntu 上的 apache2 访问控制

配置配置文件

因为我的本地环境是 ubuntu 18, 公网环境是 ubuntu 16, 所以这里说的访问控制设置主要是这个环境的该问控制.

ubuntu 18ubuntu 16apache2 配置文件的目录是 /etc/apache2. 主要的配置文件是 /etc/apache2/apache2.conf.

打开 apache2.conf 文件, 找到以 <Directory 路径名> </Directory> 包围的配置项. 通常在 160 左右.

<Directory /var/www/html/test> 中的路径 /var/www/html/test 是要设置访问控制的路径.

OptionsAllowOverride 是干什么的, 不清楚. 但反正我是照默认的复制过来了.

authtype 是认证的类型. 这里填 Basic.

authname 是充许哪个用户登录. 这个用户, 必须是下面用户文件中的用户.

authuserfile 是用户文件. 里边以 用户名:密码密文 的形式记着用户信息.

Require valid-user 是开启用户身份验证.

设置好以下内容, 就可以退出了.

生成用户文件

通过以下命令可以生成用户文件

    htpasswd -c /etc/apache2/user 用户名

其中 htpasswd 是创建 apache 用户的命令, -c 选项表示要创建一个用户文件, 如果文件存在就重新写入内容.

warring: 如果重新写入, 会复盖原有内容. 也就是说, 如果想要添加一个用户, 而不是创建一个文件, 请不要带 -c 选项.

/etc/apache2/user 是文件路径. 注意这个文件路径要和 apache2.confauthuserfile 一致.

最后跟的是用户名, 就是要创建的用户名.

键入这个名令之后, 输入两次密码, 文件就创建成功了.

cat 该文件可以看到添加的用户.

而后用 /etc/init.d/apache2 restart 命令重启 apache2 服务就可以了.

踩过的坑

一定要带上 sudo 啊! 无论是改配置文件, 还是创建用户文件.


改配置文件的时候, 最好是从上面复制一个过来. 按需添加和修改不同的. 其它的能不动就不能.

如果配置文件改错了, 可能会出现 apache2 服务重启失败的情况.

如果出现这样的情况, 就一个配置配置的试吧.


据说改 sites-enabled/000-default.conf 这个文件也可配置该问控制, 没试过.

Last Updated:
Contributors: zhang