设为首页 收藏本站
查看: 1019|回复: 0

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

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-5-5 08:41:47 | 显示全部楼层 |阅读模式
使用版本为httpd-2.2.29 源码编译安装环境。

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
[iyunv@yong www]# /usr/local/apache2/bin/htpasswd -c /data/www/.htpasswd test
New password:
Re-type new password:
Adding password for user test
[iyunv@yong www]# cat .htpasswd
test:$apr1$V0vKfDb9$MJR..TkbZy7XkFx085IRc1
[iyunv@yong www]# apachectl -t
Syntax OK
[iyunv@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
[iyunv@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
[iyunv@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
[iyunv@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
[iyunv@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
[iyunv@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
[iyunv@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
[iyunv@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



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-63745-1-1.html 上篇帖子: HTTP协议和APACHE服务器 下篇帖子: apache的常用配置 认证 用户
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表