一、配置虚拟主机
删除httpd.conf中的这行前面的警号
#Include conf/extra/httpd-vhosts.conf
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
加入如下配置:
<VirtualHost *:80>
DocumentRoot "/mydata/www"
ServerName www.12666.com
</VirtualHost>
二、配置用户认证
在相应的虚拟主机配置文件段,加入
<Directory *>
AllowOverride AuthConfig
AuthName "free"
AuthType Basic
AuthUserFile /data/.htpasswd
require valid-user
</Directory>
保存后,然后创建apache的验证用户htpasswd -cm /mydata/www/.htpasswd test ;
-m指用md5加密,在增加第二个用户的时候,就不要加-c了,因为-c是创建的意思,如果加上会把这个文件重写。
三、配置域名跳转
LoadModule rewrite_module modules/mod_rewrite.so #httpd.conf这一行前的注释去掉
然后重启动apche服务器。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.domain1.com$
RewriteRule ^/(.*)$ http://www.domain.com/$1 [R=301,L]
</IfModule>
如果是多个域名,可以这样设置:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.domain1.com [OR]
RewriteCond %{HTTP_HOST} ^www.domain2.com$
RewriteRule ^/(.*)$ http://www.domain.com/$1 [R=301,L]
</IfModule>
或者: <IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.domain2.com$
RewriteRule ^/(.*)$ http://www.domain2.com/$1 [R=301,L]
</IfModule>
五、 配置apache的访问日志
ErrorLog "|/usr/local/apache/bin/rotatelogs -l /usr/local/apache/logs/oem.discuz.qq.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/apache/bin/rotatelogs -l /usr/local/apache/logs/oem.discuz.qq.com-access_%Y%m%d.log 86400" combined env=!image-request
附:日志相关:
%h 远程主机
%l 远程主机登录名称
%u 认证用户
%t 事件产生时间
%r 请求报文的第一行(方法、资源、版本号)
%>s 最后一个请求对应的状态吗
%b 响应报文的大小
%Referer 从哪个页面来的
%user-Agent 客户端浏览器类型
六、配置静态文件缓存
<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/x-javascript "now plus 2 hours"
ExpiresByType application/x-shockwave-flash "now plus 2 hours"
ExpiresDefault "now plus 0 min"
</IfModule>
或者使用mod_headers模块实现
<ifmodule mod_headers.c>
# htm,html,txt类的文件缓存一个小时
<filesmatch "/.(html|htm|txt)$">
header set cache-control "max-age=3600"
</filesmatch>
# css, js, swf类的文件缓存一个星期
<filesmatch "/.(css|js|swf)$">
header set cache-control "max-age=604800"
</filesmatch>
# jpg,gif,jpeg,png,ico,flv,pdf等文件缓存一年
<filesmatch "/.(ico|gif|jpg|jpeg|png|flv|pdf)$">
header set cache-control "max-age=29030400"
</filesmatch>
</ifmodule>
七、配置防盗链
方法一:
SetEnvIfNoCase Referer "^http://.*\.yourdomin\.com" local_ref
SetEnvIfNoCase Referer ".*\.yourdomin\.com" local_ref
SetEnvIfNoCase Referer "^$" local_ref
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
</filesmatch>
方法二:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://www.12666.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://12666.vom$ [NC]
RewriteRule .*\.(gif|jpg|swf)$ http://www.12666.com/about/nolink.png [R,NC]
八、访问控制
<Directory /data/www/>
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
针对请求的uri去限制
<filesmatch "(.*)admin(.*)">
Order deny,allow
Deny from all
Allow from 127.0.0.1
</filesmatch>
某个某陆下禁止解析php
<Directory /data/www/path>
php_admin_flag engine off
<filesmatch "(.*)php">
Order deny,allow
Deny from all
</filesmatch>
</Directory>
九、限制某个浏览器登录
有些user_agent 不是我们想要的,可以通过rewrite功能针对 %{HTTP_USER_AGENT} 来rewirete到404页,从而达到限制某些user_agent的请求。
配置如下
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^.*Firefox/4.0* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*Chrome* [NC]
RewriteCond %{REQUEST_URI} !^/404*
RewriteRule .* /404.html
</IfModule>
请注意,你的404.html千万别再跳转到其他页面了,否则很有可能就会死循环了。
其实rewrite到404.html 并不是很好的办法,而apache的rewrite功能有一项就是forbidden ,那就是 F
配置如下
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^*Firefox/4.0* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^*Chrome* [NC]
RewriteRule .* - [F]
</IfModule>
图片替换
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^.*gif$ /static/image/common/logo.png [R=302]
# RewriteRule ^/(.*)\.png$ /static/image/common/fav.gif [R=302]
</IfModule>
apache 限制某些目录(分布在不同的目录中)不能访问通过rewrite实现
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} ^.*/admin/* [NC]
RewriteRule .* - [F]
</IfModule>
停机维护时所有页面指向一个页面,
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/1.html
RewriteRule ^(.*) /1.html
</IfModule>
。。。。。。。。。。。。