11人参与 • 2025-03-03 • Redis
修改options 为all(主要是index)即可返回目录文件
在整完apache和tomcat的之后我觉得有必要把和它下面的属性捋顺一下
如何访问根目录下的目录http://192.168.1.12/test/
访问目录http://192.168.1.12/test/ 会显示: forbidden you don't have permission to access /test/ on this server.
在httpd.conf中增加定义,即可打开无限制的目录访问权限
<directory /home/macg/www/test> options all allowoverride all </directory>
再访问会显示如下:
apache/2.0.54 (fedora) server at 192.168.1.12 port 80 index of /test name last modified size description ------------------------------------------------------------ parent directory - bg0073.jpg 29-nov-2006 21:02 36k bg0135.jpg 29-nov-2006 21:03 41k bg0137.jpg 29-nov-2006 21:03 47k slade1.html 29-nov-2006 22:02 1.2k slade2.html 29-nov-2006 22:02 1.1k slade3.html 29-nov-2006 22:02 1.4k slade4.html 29-nov-2006 22:02 1.8k slade5.html 29-nov-2006 22:02 2.3k -------------------------------------------------------------
apache/2.0.54 (fedora) server at 192.168.1.12 port 80 实际allowoverride
all是enable .htaccess目录限制功能。
但test目录下并没有.htaccess文件
等于开放访问,无限制。
将其他目录中的.htaccess拷贝入要限制访问的目录
[root@localhost test]# ls -a . .. bg0073.jpg bg0135.jpg bg0137.jpg slade1.html slade2.html slade3.html slade4.html slade5.html [root@localhost test]# cp ../test1/.htaccess . [root@localhost test]# ls -a . .. bg0073.jpg bg0135.jpg bg0137.jpg .htaccess slade1.html slade2.html slade3.html slade4.html slade5.html [root@localhost test]# more .htaccess authtype basic authname "restricted files" authuserfile /etc/httpd/passwords require valid-user
再访问http://192.168.1.12/test/
会跳出身份认证窗口,输入用户名密码,即可访问目录
.htaccess 目录限制的配置
要使用.htaccess文件,先在将httpd.conf中建立<directory ></directory>
<directory "/home/macg/www/test"> options all 允许对目录的操作,all---所有操作 allowoverride all allowoverride all----允许.htaccess所有指令,缺省是all allowoverride none ----完全忽略.htaccess文件 </directory>
用/usr/bin/htpasswd创建一个用于认证的密码文件。
并且这个文件不应该置于documentroot目录下,以避免被下载。
建议创建在/etc/httpd/目录下:
[root@localhost httpd]# /usr/bin/htpasswd -c /etc/httpd/passwords macg -c建立文件 new password: re-type new password: adding password for user macg [root@localhost httpd]# /usr/bin/htpasswd /etc/httpd/passwords gary 没有-c就是单纯的adduser 追加用户 new password: re-type new password: adding password for user gary [root@localhost httpd]# more /etc/httpd/passwords macg:u8jcwsszyab2g gary:06ycdyg7aijlm
在受限制目录下建立.htaccess文件
[root@localhost test]# ls -a . .. bg0073.jpg bg0135.jpg bg0137.jpg .htaccess slade1.html slade2.html slade3.html slade4.html slade5.html [root@localhost test]# more .htaccess authtype basic authtype--------认证类型 由mod_auth_basic提供的basic
basic认证方法并不加密来自用户浏览器的密码(明文传输) 更安全的认证方法"authtype digest",即由mod_auth_digest供的摘要认证
最新的浏览器版本才支持md5认证
(认证,服务器响应速度会受一些影响,一般有几百个用户就会对响应速度有非常明显的影响)
authname "restricted files" authname "会员区"
此句是显示给用户看的
authuserfile /etc/httpd/passwords
此目录接受passwords内定义用户的认证请求
or
require macg
此目录只接受单一用户macg(unix用户)认证请求
<directory ></directory>中指令的含义
<directory "/home/macg/www/test"> options all allowoverride all </directory> options指令-------目录的访问特性 option none 禁止对目录的所有操作 option all 允许对目录的所有操作,all---所有操作 option execcgi 对该目录,可以执行cgi脚本 option indexes 允许访问该目录(而该目录没有index.html)时,返回目录下的文件列表 option followsymlinks 只允许对目录的followsymlinks操作 allowoverride指令 none 不读取.htaccess all all----允许.htaccess所有指令,缺省是all limit .htaccess函盖具体限定的主机(allow,deny) authconfig .htaccess函盖跟认证有关指令(authtype,authname)
<directory ></directory> 对下面的所有子目录也生效
所以httpd.conf中先对根目录/进行配置,等于是设置缺省配置
httpd.conf中先对根目录/进行配置,等于是设置缺省配置
<directory /> options followsymlinks 禁止对目录的访问(option只允许对目录的followsymlinks操作) allowoverride none 不读取.htaccess order deny,allow deny all deny from all </directory> <directory "/usr/local/apache2/htdocs"> options indexes followsymlinks 只允许访问index和连接 allowoverride none order allow,deny 承接父目录(/)的deny all,这里也是deny all allow from all </directory>
order allow deny ————-httpd.conf中封ip之类的操作
apache模块 mod_authz_host
<directory /docroot> order deny,allow deny from ... allow from ... </directory>
注意顺序:
除了后面allow的,其他都deny
典型的封ip
order allow,deny
allow from all
deny from 205.252.46.165
注意顺序:
除了后面deny的,其他都allow
deny from 192.168.2 典型的封网段
上面清楚了 可以设置一个例子
apache对于多虚拟主机以及多虚拟路径的配置
servername localhost <directory /> allowoverride none require all denied </directory> documentroot "/home/work/"
保证所有的项目都放在/home/work/目录, 该目录只做配置
<directory "/home/work/"> options none allowoverride none require all denied </directory>
httpd-vhosts.conf 首先第一件事就是指定默认的documentroot
没有商量, 必须放在httpd.conf中申明的根路径
不需要severname配置
<virtualhost 127.0.0.1:8800> documentroot "/home/work/www/htdocs" <directory /home/work/www/htdocs> allowoverride none require all granted </directory> </virtualhost>
如果不需要多主机支持,到此为止
添加虚拟主机,虚拟目录等等
说明: local.baidu.com 为第一个主机名, 如果多个域名映射设置serveralias即可
alias 注意“/”的位置
```clike <virtualhost local.baidu.com:8800> documentroot "/home/work/workspace" servername local.baidu.com # serveralias local.baidu.com.cn local.baidu.cn <directory /home/work/workspace> options followsymlinks allowoverride none require all granted </directory> alias /phpmyadmin "/home/work/www/htdocs/phpmyadmin/" # 添加一个日志分析, rotatelogs需要自己安装 logformat "{method:\"%m\",state:\"%s\",protocol:\"%h\",url:\"%u\",time:\"%{%y-%m-%d %t}t\",ua:\"%{user-agent}i\",query:\"%q\",refer:\"%{referer}i\",server:\"%v\"}" seo customlog "|/usr/sbin/rotatelogs logs/seo_%y%m%d.log 86400 480" seo </virtualhost>
## 同上其他主机配置 当然对于该目录下个各种配置属性 不过下面这个是2.2的属性 在2.4中进行了少许的变更 所以2.4还是要查询文档 不过有下面的解释打底应该很容易 allow和deny可以用于apache的conf文件或者.htaccess文件中(配合 directory, location, files等),用来控制目录和文件的访问授权。 所以,最常用的是: order deny,allow allow from all 注意“deny,allow”中间只有一个逗号,也只能有一个逗号,有空格都会出 错;单词的大小写不限。上面设定的含义是先设定“先检查禁止设定,没有 禁止的全部允许”,而第二句没有deny,也就是没有禁止访问的设定,直 接就是允许所有访问了。这个主要是用来确保或者覆盖上级目录的设置,开 放所有内容的访问权。 按照上面的解释,下面的设定是无条件禁止访问: order allow,deny deny from all 如果要禁止部分内容的访问,其他的全部开放: order deny,allow deny from ip1 ip2 或者 order allow,deny allow from all deny from ip1 ip2 apache会按照order决定最后使用哪一条规则,比如上面的第二种方式,虽 然第二句allow允许了访问,但由于在order中allow不是最后规则,因此还 需要看有没有deny规则,于是到了第三句,符合ip1和ip2的访问就被禁止 了。注意,order决定的“最后”规则非常重要,下面是两个错误的例子和 改正方式: order deny,allow allow from all deny from domain.org 错误:想禁止来自domain.org的访问,但是deny不是最后规则,apache在 处理到第二句allow的时候就已经匹配成功,根本就不会去看第三句。 解决方法:order allow,deny,后面两句不动,即可。 order allow,deny allow from ip1 deny from all 错误:想只允许来自ip1的访问,但是,虽然第二句中设定了allow规则,由 于order中deny在后,所以会以第三句deny为准,而第三句的范围中又明显 包含了ip1(all include ip1),所以所有的访问都被禁止了。 解决方法一:直接去掉第三句。 解决方法二: order deny,allow deny from all allow from ip1 下面是测试过的例子: -------------------------------- order deny,allow allow from all deny from 219.204.253.8 全部都可以通行 ------------------------------- order deny,allow deny from 219.204.253.8 allow from all 全部都可以通行 ------------------------------- order allow,deny deny from 219.204.253.8 allow from all 只有219.204.253.8不能通行 ------------------------------- order allow,deny allow from all deny from 219.204.253.8 只有219.204.253.8不能通行 ------------------------------- ------------------------------- order allow,deny deny from all allow from 219.204.253.8 全部都不能通行 ------------------------------- order allow,deny allow from 219.204.253.8 deny from all 全部都不能通行 ------------------------------- order deny,allow allow from 219.204.253.8 deny from all 只允许219.204.253.8通行 ------------------------------- order deny,allow deny from all allow from 219.204.253.8 只允许219.204.253.8通行 ------------------------------- -------------------------------- order deny,allow 全部都可以通行(默认的) ------------------------------- order allow,deny 全部都不能通行(默认的) ------------------------------- order allow,deny deny from all 全部都不能通行 ------------------------------- order deny,allow deny from all 全部都不能通行 ------------------------------- 对于上面两种情况,如果换成allow from all,则全部都可以通行! ------------------------------- order deny,allow deny from 219.204.253.8 只有219.204.253.8不能通行 ------------------------------- order allow,deny deny from 219.204.253.8 全部都不能通行 ------------------------------- order allow,deny allow from 219.204.253.8 只允许219.204.253.8通行 ------------------------------- order deny,allow allow from 219.204.253.8 全部都可以通行 ------------------------------- ------------------------------- order deny,allow allow from 218.20.253.2 deny from 218.20 代表拒绝218.20开头的ip,但允许218.20.253.2通过;而其它非218.20开头的ip也都允许通过。 ------------------------------- order allow,deny allow from 218.20.253.2 deny from 218.20 和上面的差不多,只是掉换的order语句中的allow、deny先后顺序,但最 终结果表示全部都拒绝!
到此这篇关于apache配置访问站点下所有文件的实现的文章就介绍到这了,更多相关apache配置访问站点下所有文件内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论