如何在Apache中保护特定的URL

时间:2019-05-19 01:26:27  来源:igfitidea点击:

有时,我们需要保护站点中的单个url或少数特定url,而所有其他站点url都保留为公共访问。
这是非常容易管理与使用目录和文件结构的网站。
但有些框架如cakephp所采用的路由结构与目录结构不同,我们无法在目录级对其进行安全保护。
本文将在Apache中保护特定的url。
例如,一个站点有一个安全区域,如“http://example.com/admin/”,并且我们需要只有经过授权的用户或ips才可以访问 /admin/部分。

1。设置IP对特定URL的限制

首先编辑apache配置文件并在VirtualHost中添加以下条目。
这将只允许192.168.10.11和123.45.67.89 访问/admin url。

<Location /admin>
  Order deny,allow
  Deny from all
  Allow from 192.168.10.11
  Allow from 123.45.67.89
</Location>

保存Apache配置文件并使用以下命令之一重新启动Apache服务。

# service httpd restart          #   RHEL 系统
$ sudo service apache2 restart    #  Debian 系统

让我们测试从任何其他ip访问网站。
同时测试配置文件中的给定ip能否访问。

2。在特定URL上设置用户身份验证

编辑Apache配置文件并在网站虚拟主机部分添加以下条目。

<Location /admin>
  AuthUserFile /var/www/htpasswd/.htpasswd
  AuthName "Password Protected Area"
  AuthType Basic
  Require valid-user
</Location>

现在使用下面的命令创建新的.htpasswd文件并添加一个新用户。

# htpasswd -cm /var/www/htpasswd/.htpasswd myuser

New password:
Re-type new password:
Adding password for user myuser

重启apache并访问站点url。
它将提示输入登录信息。

# service httpd restart          #   RHEL 系统
$ sudo service apache2 restart    #  Debian 系统