lamp常用配置

一、配置虚拟主机
删除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>





。。。。。。。。。。。。

你可能感兴趣的:(配置,lamp)