开发者社区> cnbird> 正文

apache .htaccess 的应用

简介: 一.基本的Apache用户认证方法:  若对某一目录下的文件如/home/ftp/pub需要做到用户认证,则在httpd.
+关注继续查看

一.基本的Apache用户认证方法: 

若对某一目录下的文件如/home/ftp/pub需要做到用户认证,则在httpd.conf 
中加入下面的行 
<> 
options indexes followsymlinks 
allowoverride authconfig 
order allow,deny 
allow from all 

<> 
用在目录/home/ftp/pub下放文件.htaccess,内容如下: 
authname "shared files" 
authtype basic 
authuserfile /etc/.passwd 
require valid-user 

用随Apache来的程序htpasswd 生成文件/etc/.passwd,每行一个用户名:密码 

首先用htpasswd创建一个密码文件:比如文件名叫做my.passwd
/home/apache/bin/htpasswd -c -b my.passwd myusername mypassword
如果增加帐号:
/home/apache/bin/htpasswd -b my.passwd anotherusername anotherpassword

将my.passwd上传到一个非发布路径下。
比如你的物理WEB根目录的上一级
/home/apache/conf/my.passwd

创建 .htaccess
AuthName "My Authorization Directory"
AuthType Basic
AuthUserFile /home/apache/conf/my.passwd
Require valid-user

将这个文件上传到你需要进行用户认证的目录:
/home/apache/htdocs/admin/.htaccess

这样这个目录的访问就需要认证了。

只要能提供正确的用户名和密码对,就允许登录访问,这是针对任何地址来的 
请求都要求提供用户名和密码认证。 

二.针对部分网段或地址要求认证。 

若公司LAN所在网段为192.168.0.0/24,且有一防火墙专线接入Internet, 
内部网卡的地址为192.168.0.1/32,则现在希望所有通过拨本地163通过 
防火墙上的apache反向代理向LAN上的另一WWW服务器访问时需要认证,而本地 
LAN上的用户不需认证。可以在httpd.conf中放入: 
〈Directory /home/ftp/pub> 
Options Indexes FollowSymLinks 
AllowOverride AuthConfig 
order deny,allow 
deny from 192.168.0.1 
〈/Directory> 

且在/home/ftp/pub/.htaccess中放入: 
AuthName "shared files" 
AuthType Basic 
AuthUserFile /etc/.passwd 
require valid-user 
satisfy any 

三.对同一目录及其下的子目录有不同的权限,仅某些人可以存取一目录下的 
子目录。 
如有一目录/home/ftp/pub/sales,有三个用户user1,user2,user3都需要用户名 
和密码进入/home/ftp/pub,但仅user1,user2能进入/home/ftp/pub/sales.则 
放下面的行到httpd.conf 

〈Directory /home/ftp/pub> 
Options Indexes 
AllowOverride AuthConfig 
order allow,deny 
allow from all 
〈/Directory> 

〈Directory /home/ftp/pub/sales> 
Options Indexes 
AllowOverride AuthConfig 
order allow,deny 
allow from all 
〈/Directory> 

且看/home/ftp/pub/.htaccess为: 
AuthName "shared files" 
AuthType Basic 
AuthUserFile /etc/.passwd 
require valid-user 

且看/home/ftp/pub/sales/.htaccess 
AuthName "shared files" 
AuthType Basic 
AuthUserFile /etc/.passwd 
AuthGroupFile /etc/.salesgroup 
require group manager 

且文件/etc/.passwd内容为: 
user1:passwd1 
user2:passwd2 
user3:passwd3 

且文件/etc/.salesgroup内容为: 
manager: user1 user2  
 

在Apache中使用.htaccess配置文件"

在配置Apache时,除了可以在主配置文件(http.conf)中配置访问控制之外,还可以使用.htaccess 文件配置对指定目录的访问控制。使用.htaccess文件可以改变主配置文件中的配置,但是它只能设置对指定目录的访问控制,这个目录就是. htaccess文件存放的目录。在一个目录下设置了.htaccess文件之后,当用户使用浏览器访问此目录时,Apache会读取该文件的配置来覆盖主配置文件(http.conf)的配置。

注意:
  1.修改.htaccess文件无需重新启动Apache服务器,而是立即生效。
  2.在可能的情况下应该尽量避免使用.htaccess文件,因为使用 .htaccess文件会降低服务器的运行性能。


何时使用.htaccess文件
   有如下两种情况需要使用.htaccess文件
    *在多个用户之间分割配置
    *想在不重新启动服务器的情况下改变服务器配置
  使用.htaccess文件必须经过两个配置步骤
    *首先在主配置文件中的启用并控制对.htaccess文件的使用
    *然后在需要覆盖主配置文件的目录下生成.htaccess文件
  在主配置文件中的启用并控制对.htaccess文件的使用
  1.设置文件名称
  必须保证在主配置文件中包含如下的配置语句:

AccessFileName .htaccess


  Order allow,deny
  Deny from all


2.控制在.htaccess文件中可以使用的指令组
  要控制在.htaccess文件中可以使用的指令组,需要在主配置文件中使用AllowOverride指令。下面列出了可以在AllowOverride指令所使用的指令组。

指令组 可用指令 说明
============================
AuthConfig

AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require

进行认证、授权以及安全的相关指令
=============================
FileInfo

DefaultType, ErrorDocument, ForceType, LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter

控制文件处理方式的相关指令
=============================
Indexes

AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName

控制目录列表方式的相关指令
==============================
Limit

Allow,Deny,Order

进行目录访问控制的相关指令
==============================
Options

Options, XBitHack

启用不能在主配置文件中使用的各种选项
=============================
All

全部指令组

可以使用以上所有指令
=============================
None
禁止使用所有指令
禁止处理.htaccess文件
==============================


生成.htaccess文件
  当在主配置文件中配置了对.htaccess文件的启用和控制之后,接下来就可以在需要覆盖主配置文件的目录下生成.htaccess文件。.htaccess文件中可以使用的配置指令取决于主配置文件中AllowOverride指令的设置。
  使用.htaccess文件举例
  下面举一个简单的例子说明.htaccess文件的使用。


//首先在文档根目录下生成一个private目录,并创建测试文件
# cd /var/www/html
# mkdir private
# cd private
# touch test
//修改配置前,在客户浏览器查看结果,如图1所示
//修改主配置文件
# vi /etc/httpd/conf/httpd.conf
//添加如下配置语句
<Directory "/var/www/html/private">
  AllowOverride Options
</Directory>
#
//重新启动httpd
# service httpd restart
//在/var/www/html/private目录下生成.htaccess文件
# vi /var/www/html/private/.htaccess
//添加如下配置语句
Options –Indexes
#
//在客户浏览器中查看结果,如图2所示
//通过查看配置结果,可以证明.htaccess已经生效。
//即对private目录的访问不生成文件列表

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Apache Maven 高级应用(Part B)
Apache Maven 高级应用(Part B)
35 0
常见apache+tomcat应用架构与负载均衡| 学习笔记
快速学习常见apache+tomcat应用架构与负载均衡。
62 0
常见apache+tomcat应用架构与负载均衡
一、常用的LAMT应用架构 二、tomcat 的安装配置以及jk模块的配置 三、LAMT负载均衡架构的实现 四、具体使用流程
126 0
应用实践 | 数仓体系效率全面提升!同程数科基于 Apache Doris 的数据仓库建设
同程数科成立于 2015 年,是同程集团旗下的旅游产业金融服务平台。2020 年,同程数科基于 Apache Doris 丰富的数据接入方式、优异的并行运算能力、极简运维等特性,引入 Apache Doris 进行数仓架构2.0 的搭建。本文详细讲述了架构1.0 到 2.0 的演进过程及 Doris 的应用实践,希望对大家有所帮助
553 0
应用实践 | 10 亿数据秒级关联,货拉拉基于 Apache Doris 的 OLAP 体系演进
货拉拉成立于 2013 年,成长于粤港澳大湾区,是一家从事同城、跨城货运、企业版物流服务、搬家、汽车销售及车后市场服务的互联网物流公司。截至 2022 年 4 月,货拉拉的业务范围已经覆盖了国内 352 座城市,月活司机达到 58 万,月活用户达到 760 万,包含 8 条以上的业务线。 货拉拉大数据体系为支撑公司业务,现在已经成立三个 IDC 集群、拥有上千台规模的机器数量,存储量达到了 20PB、日均任务数达到了 20k 以上,并且还处在快速增长的过程中
338 0
Presto on Apache Kafka 在 Uber 的大规模应用
本文最初发布于 Uber 官方博客,InfoQ 经授权翻译如下
90 0
Apache Hudi在华米科技的应用-湖仓一体化改造
华米科技是一家基于云的健康服务提供商,拥有全球领先的智能可穿戴技术。在华米科技,数据建设主要围绕两类数据:设备数据和APP数据,这些数据存在延迟上传、更新频率高且广、可删除等特性,基于这些特性,前期数仓ETL主要采取历史全量+增量模式来每日更新数据。随着业务的持续发展,现有数仓基础架构已经难以较好适应数据量的不断增长,带来的显著问题就是成本的不断增长和产出效率的降低。
145 0
Apache Hudi在Hopworks机器学习的应用
Hopsworks特征存储库统一了在线和批处理应用程序的特征访问而屏蔽了双数据库系统的复杂性。我们构建了一个可靠且高性能的服务,以将特征物化到在线特征存储库,不仅仅保证低延迟访问,而且还保证在服务时间可以访问最新鲜的特征值。
100 0
+关注
cnbird
阿里云安全专家,主要负责阿里云云产品安全。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
贺小令|Apache Flink 1.16 简介
立即下载
Apache Dubbo3 源码深入解读
立即下载
Apache Dubbo 微服务开发从入门到精通
立即下载