Apache配置用户认证、域名跳转、日志轮询、静态文件缓存、防盗链

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

1、配置网站用户认证

编辑虚拟机主机配置文件 /usr/local/apache2/conf/extra/httpd-vhosts.conf,在虚拟主机配置文件段内加入绿色标示代码:

<VirtualHost *:80>

    DocumentRoot "/data/www"

    ServerName www.123.com

    ServerAlias www.a.com www.b.com

    <Directory *>
       AllowOverride AuthConfig
       AuthName "my test web"
       AuthType Basic
       AuthUserFile /data/www/.htpasswd
       require valid-user
    </Directory>

</VirtualHost>

DocumentRoot 主目录

ServerName   网站域名

ServerAlias  网站别名,可以写多个;

AuthName可以自定义;

AuthUserFile 指定用户认证的用户名和密码存放文件。

保存退出;使用apachectl -t测试配置是否正确,apachectl restart 重启服务。


/usr/local/apache2/bin/htpasswd    创建用户和密码的命令

格式为:htpasswd -c /data/www/.htpasswd  username

第一次创建用户要用到-c 参数(create创建新文件);第2次添加用户,不用-c参数,如果加-c则会覆盖之前的文件。

.htpasswd是来存放用户名和密码的;可以使用cat查看;

修改密码的格式为:htpasswd -m /data/www/.htpasswd user2

-m    表示使用md5加密密码;默认是-d CRYPT加密。

-D    删除用户及密码

1
2
3
4
5
6
7
8
9
[root@yong www] # /usr/local/apache2/bin/htpasswd -c /data/www/.htpasswd test
New password: 
Re- type  new password: 
Adding password  for  user  test
[root@yong www] # cat .htpasswd
test :$apr1$V0vKfDb9$MJR..TkbZy7XkFx085IRc1
[root@yong www] # apachectl -t
Syntax OK
[root@yong www] # apachectl restart

打开IE浏览器进行测试,弹出对话框需要输入认证的用户及密码才可以访问网站。

wKioL1VG2iaAdLY_AAG3e8hCRiY461.jpg


2、配置域名跳转

网站可以设置域名多个域名别名,设置访问别名时直接跳转到主域名;

主域名为:www.123.com 别名域名为:www.a.com  www.b.com    访问别名域名跳转到123.com;301是永久跳转,302是暂时跳转;有多个域名跳转要加[OR]


在虚拟主机配置文件段内加入:

    <IfModule mod_rewrite.c>

        RewriteEngine on

        RewriteCond %{HTTP_HOST} ^www.a.com$ [OR]

        RewriteCond %{HTTP_HOST} ^www.b.com$

        RewriteRule ^/(.*)$ http://www.123.com/$1 [R=301,L]

    </IfModule>


每次修改完配置文件都需要重启apache服务,切记切记!!!!!

打开浏览器访问www.a.com www.b.com 都会跳转到www.123.com

或者使用curl 进行测试,Location显示主域名则表示跳转成功。

1
2
3
4
5
6
7
[root@localhost www] # curl -x127.0.0.1:80 www.a.com -I
HTTP /1 .1 
301 Moved Permanently
Date: Fri, 01 May 2015 08:14:24 GMT
Server: Apache /2 .2.16 (Unix) DAV /2  PHP /5 .3.28
Location: http: //www .123.com/
Content-Type: text /html ; charset=iso-8859-1
1
2
3
4
5
6
7
[root@localhost www] # curl -x127.0.0.1:80 www.b.com -I
HTTP /1 .1 
301 Moved Permanently
Date: Fri, 01 May 2015 08:21:06 GMT
Server: Apache /2 .2.16 (Unix) DAV /2  PHP /5 .3.28
Location: http: //www .123.com/
Content-Type: text /html ; charset=iso-8859-1


3、配置日志轮询

apache的主配置文件中定义的log格式,第一种是复杂格式,第2种是普通格式;日常工作中使用复杂模式。

    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

    LogFormat "%h %l %u %t \"%r\" %>s %b" common

%h  远程主机

%l   远程主机登录名称

%u  认证用户

%t   事件产生时间

%r   请求报文的第一行(方法、资源、版本号)

%>s  最后一个请求对应的状态码

%b   响应报文的大小

%Referer  从哪个页面来的

%user-Agent  客户端浏览器类型


红色标示的需要填写日志的绝对路径,自定义日志名称;

复制下面的代码到虚拟主机配置中:

ErrorLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/123.com-error_%Y%m%d.log 86400"

    SetEnvIf Request_URI ".*\.gif$" image-request

    SetEnvIf Request_URI ".*\.jpg$" image-request

    SetEnvIf Request_URI ".*\.png$" image-request

    SetEnvIf Request_URI ".*\.bmp$" image-request

    SetEnvIf Request_URI ".*\.swf$" image-request

    SetEnvIf Request_URI ".*\.js$" image-request

    SetEnvIf Request_URI ".*\.css$" image-request

CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/123.com-access_log_%Y%m%d.log 86400" combined env=!image-request 

日志里面不记录gif、jpg、png、bmp、swf、js、css 的信息,日志格式按照每天日期命名,86400代表一天24小时;


4、配置静态文件缓存

定义图片、css、js、swf 的过期时间;

<IfModule mod_expires.c>

    ExpiresActive on

    ExpiresByType image/gif  "access plus 1 days"

    ExpiresByType image/jpeg "access plus 24 hours"

    ExpiresByType image/png "access plus 24 hours"

    ExpiresByType text/css "now plus 2 hour"

    ExpiresByType application/javascript "now plus 2 hours"

    ExpiresByType application/x-shockwave-flash "now plus 2 hours"

    ExpiresDefault "now plus 0 min"

</IfModule>


Expires 语法如下:

ExpiresByType type/encoding "<base> [plus] <num> <type>}*"

其中<base>是下列之一:

access 、now (等价于'access') 、modification 

plus关键字是可选的。 <num>必须是整数, 

<type>是下列之一:

years     months     weeks     days     hours    minutes    seconds 


使用curl测试,主要查看cache-Control: max-age 这个时间;

实验结果,在www目录建立jpeg gif png css js swf文件测试;

1
2
3
4
5
6
7
8
9
10
[root@www] # curl -u test:1234 -x127.0.0.1:80 www.123.com/2.jpeg -I
HTTP /1 .1 200 OK
Date: Sun, 03 May 2015 09:01:04 GMT
Server: Apache /2 .2.16 (Unix) DAV /2  PHP /5 .3.28
Last-Modified: Sun, 03 May 2015 08:58:38 GMT
ETag:  "3ffcf-0-51529a6b14497"
Accept-Ranges: bytes
Cache-Control: max-age=86400
Expires: Mon, 04 May 2015 09:01:04 GMT
Content-Type: image /jpeg
1
2
3
4
5
6
7
8
9
10
[root@www] # curl -u test:1234 -x127.0.0.1:80 www.123.com/1111.js -I
HTTP /1 .1 200 OK
Date: Sun, 03 May 2015 09:05:33 GMT
Server: Apache /2 .2.16 (Unix) DAV /2  PHP /5 .3.28
Last-Modified: Sun, 03 May 2015 09:03:22 GMT
ETag:  "3ffd2-0-51529b7a635d6"
Accept-Ranges: bytes
Cache-Control: max-age=7200
Expires: Sun, 03 May 2015 11:05:33 GMT
Content-Type: application /javascript


5、防盗链

防止网站的图片、文档、音乐等格式他人盗用链接,只允许指定的域名可以链接。

模板如下,定义的文件格式可以自行添加;

        SetEnvIfNoCase Referer "^http://www.123.com" local_ref

        SetEnvIfNoCase Referer "www.a.com" local_ref
        SetEnvIfNoCase Referer "www.b.com" local_ref
        SetEnvIfNoCase Referer "^$" local_ref
        <filesmatch "\.(txt|doc|mp3|zip|rar|jpeg|png|jpg|gif)">
        Order Allow,Deny
        Allow from env=local_ref
        </filesmatch>

使用curl -e 检测防盗链,不是白名单的域名会显示403错误;

实验结果:其他网站使用链接地址会报403错误;401错误是网站有用户认证,需要加-u参数指定用户认证登录才可以。

1
2
3
4
5
[root@www] # curl -e "http://www.baidu.com/2.jpg" -x127.0.0.1:80 www.123.com/2.jpg -I
HTTP /1 .1 403 Forbidden
Date: Sun, 03 May 2015 09:25:06 GMT
Server: Apache /2 .2.16 (Unix) DAV /2  PHP /5 .3.28
Content-Type: text /html ; charset=iso-8859-1
1
2
3
4
5
6
7
[root@www] # curl -e "http://www.a.com/2.jpg" -x127.0.0.1:80 www.123.com/2.jpg -I
HTTP /1 .1 
401 Authorization Required
Date: Sun, 03 May 2015 09:27:48 GMT
Server: Apache /2 .2.16 (Unix) DAV /2  PHP /5 .3.28
WWW-Authenticate: Basic realm= "my test web"
Content-Type: text /html ; charset=iso-8859-1
1
2
3
4
5
6
7
8
9
10
[root@www] # curl -u test:1234 -e "http://www.a.com/2.jpg" -x127.0.0.1:80 www.123.com/2.jpg -I
HTTP /1 .1 200 OK
Date: Sun, 03 May 2015 09:28:08 GMT
Server: Apache /2 .2.16 (Unix) DAV /2  PHP /5 .3.28
Last-Modified: Sun, 03 May 2015 08:58:38 GMT
ETag:  "3ffcf-0-51529a6b14497"
Accept-Ranges: bytes
Cache-Control: max-age=86400
Expires: Mon, 04 May 2015 09:28:08 GMT
Content-Type: image /jpeg
http://blog.51cto.com/mofansheng





本文转自 模范生 51CTO博客,原文链接:http://blog.51cto.com/mofansheng/1641628,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
存储 监控 安全
实时记录和查看Apache 日志
Apache 是一个开源、跨平台的 Web 服务器,保护其平台需监控活动和事件。Apache 日志分为访问日志和错误日志,分别记录用户请求和服务器错误信息。EventLog Analyzer 是一款强大的日志查看工具,提供集中收集、分析、实时警报和安全监控功能,帮助管理员识别趋势、检测威胁并确保合规性。通过直观的仪表板和自动化响应,它简化了大规模日志管理,增强了 Apache 服务器的安全性和性能。
|
3月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
960 31
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
2月前
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
|
29天前
|
存储 运维 监控
金融场景 PB 级大规模日志平台:中信银行信用卡中心从 Elasticsearch 到 Apache Doris 的先进实践
中信银行信用卡中心每日新增日志数据 140 亿条(80TB),全量归档日志量超 40PB,早期基于 Elasticsearch 构建的日志云平台,面临存储成本高、实时写入性能差、文本检索慢以及日志分析能力不足等问题。因此使用 Apache Doris 替换 Elasticsearch,实现资源投入降低 50%、查询速度提升 2~4 倍,同时显著提高了运维效率。
金融场景 PB 级大规模日志平台:中信银行信用卡中心从 Elasticsearch 到 Apache Doris 的先进实践
|
2月前
|
存储 监控 安全
实时记录和查看Apache 日志
Apache 是一个开源、跨平台的Web服务器,保护其安全依赖于监控活动和分析访问日志。日志分为访问日志和错误日志,前者记录用户请求及响应情况,后者记录服务器错误信息。EventLog Analyzer等工具可集中收集、分析日志,提供直观的仪表板和实时警报,帮助识别趋势、异常和威胁,确保服务器稳定性和安全性,并支持合规管理。
|
2月前
|
SQL
南大通用GBase 8a配置gcware日志等级,减少日志输出,节省磁盘IO
南大通用GBase 8a配置gcware日志等级,减少日志输出,节省磁盘IO
|
2月前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
88 5
|
4月前
|
存储 分布式计算 druid
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
65 1
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
|
4月前
|
缓存 前端开发 应用服务中间件
CORS跨域+Nginx配置、Apache配置
CORS跨域+Nginx配置、Apache配置
343 7
|
24天前
|
数据建模 网络安全
阿里云SSL证书不同类型DV、OV和EV如何收费?单域名和通配符SSL价格整理
阿里云SSL证书提供免费和收费版本,涵盖DV、OV、EV多种类型。收费证书品牌包括DigiCert、GlobalSign等,价格从238元/年起。免费SSL证书由Digicert提供,单域名有效3个月,每个实名主体每年可领取20个。具体价格和详情见阿里云SSL官方页面。

推荐镜像

更多