・/usr/local/apache2/bin/apachectl -M:查看安装了哪些模块
・/usr/local/apache/bin/apachectl -V:查看使用的模式
・/usr/local/apache2/bin/apachectl -t:检查语法错误
・/usr/local/apache2/bin/apachectl -l:查看安装的库文件
・/usr/local/apache2/bin/apachectl graceful:重新加载配置
・/usr/local/apache2/htcocs 主页存放目录
・/usr/local/apache2/bin/apachectl 启动文件目录
・/usr/local/apache2/conf 配置文件路径
Apache的两种模式:
worker模式:使用多个子进程,每个子进程又有多个线程,每个线程处理一个请求(适用于高并发场景,消耗内存小)
perfork模式:使用多个子进程,每个子进程不包括线程,每个进程处理一个请求(比较稳定)
1.域名跳转
・网站可以设置域名多个域名别名,设置访问别名是跳转到主域名 ・主域名为www.1.com别名为www.a.com,www.b.com。访问别名时跳转到www.1.com ・301是永久跳转,302是暂时跳转,有多个域名要跳转与要加【OR】 ・模块:rewrite 配置: <IfModule mod_rewrite.c> RewriteEngine on 重写引擎 [开启] RewriteCond %{HTTP_HOST} ^www.a.com$ 重写条件:是www.a.com时 RewriteRule ^/(.*)$ www.1.com /$1 [R=301,L] 重写规则:跳转到www.1.com </IfModule>
2.日志轮询(切割)
(1)Apache主配置文件中定义的日志格式,第一种是复杂格式,第二种是普通格式 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common (2)访问日志格式解释: %h:客户机的IP地址 %l:客户机登陆名称 %u:认证用户 %t:访问的日期、时间 %r:客户访问的方式,访问的什么资源,什么协议 %>s 请求对应的状态码 #2开头正常,3开头被重定向,4开头客户端存在错误,5开头服务器端遇到错误 %b:传送的字节数 %{Referer}: 从哪个页面来的(比如从百度搜索到的QQ空间,那Referer就是百度 %{User-Agent}:客户用的什么浏览器 (3)配置日志切割:避免产生大文件, 可以每天生成一个 ・在httpd.conf里定义日志格式,虚拟主机里只是调用日志格式 配置: SetEnvIf Request_URI ".*\.gif$ " image-request #定义不记录进日志的内容,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 /var/log/access_%Y%m%d.log 86400" combined env=!image-request #env=!image-request 只记录没被image-requset的内容。
3.静态缓存
・好处:用户第一次访问时,把定义的缓存在浏览器中,第二次访问就不需要再次请求,加快访问速度 ・定义图片、css、js、swf过期时间 ・模块:mod_expires.c 配置 <IfModule mod_expires.c> ExpiresActive on #有效期[打开] ExpiresByType image/gif "access plus 1 day" #过期的类型 ,访问超过一天 ExpiresByType image/jpeg "access plus 24 hours" ExpiresByType image/png "access plus 24 hours" ExpiresByType image/css "now plus 2 day" ExpiresByType application/javascript "now plus 2 hours" ExpiresByType application/shockwave-flash "now plus 2 hours" ExpiresDefault "now plus 0 min" </IfModule> ・缓存时间测试:curl -x127.0.0.1:80 www.a.com/1.gif #查看过期时间
4.防 盗链
・防止网站的图片、文档、音乐等格式他人盗用链接,只允许指定的域名可以链接 ・盗链:把别人网站上的一张图片,复制链接,然后发在自己的网站上,用户来访问自己网站,承受负担和流量的是别人的服务器。 配置: <Directory /data/www> SetEnvIfNoCase Referer "www.1.com" local_ref #定义访问的域名 SetEnvIfNoCase Referer "www.a.com" local_ref #定义访问的域名 SetEnvIfNoCase Referer "www.b.com" local_ref #定义访问的域名 SetEnvIfNoCase Referer "^$" local_ref <filesmatch "txt|doc|mps|rar|zip|jpeg|png|jpg|gif"> #定义禁止盗链的格式 Order Allow,Deny Allow from env=local_ref #这里设置规则,允许还是不允许 </filesmatch> </Directory> ・使用curl -e 检测防盗链 ・解释:域名是SetEnvIfNoCase 中定义的才可以访问filesmatch中定义的禁止盗链的内容 ・注意:如果是上边定义的域名以外的域名会显示403错误 ・其他网站使用盗链地址出现403错误
5.访问控制
・禁止用IP访问网站 <Directory /data/www> Order allow,deny Deny from all </Directory> ・对wordpress后台主页做访问控制 <Directory /data/www/wp-admin> <filesmatch "index.php"> Order deny,allow Deny from all Allow from 127.0.0.1 </filesmatch> </Directory>
测试:如果不是本机进入后台网页进入后台,出现403 forbidden。
6.禁止解析php(防止看到源代码)
<Directory /data/www/wp-admin> php_admin_flag engine off #关闭解析 <filesmatch "(.*)php"> #/data/www/wp-admin目录下任何php的文件,都禁止解析 Order deny,allwo Deny from all </filesmatch> </Directory>
7.伪静态
加入到rewrite模块中
RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^/topic-(.+)\.html$ /portal.php?mod=topic&topic=$1&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^/article-([0-9]+)-([0-9]+)\.html$ /portal.php?mod=view&aid=$1&page=$2&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^/forum-(\w+)-([0-9]+)\.html$ /forum.php?mod=forumdisplay&fid=$1&page=$2&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /forum.php?mod=viewthread&tid=$1&extra=page\%3D$3&page=$2&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^/group-([0-9]+)-([0-9]+)\.html$ /forum.php?mod=group&fid=$1&page=$2&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^/space-(username|uid)-(.+)\.html$ /home.php?mod=space&$1=$2&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^/blog-([0-9]+)-([0-9]+)\.html$ /home.php?mod=space&uid=$1&do=blog&id=$2&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^/archiver/(fid|tid)-([0-9]+)\.html$ /archiver/index.php?action=$1&value=$2&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^/([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+)\.html$ /plugin.php?id=$1:$2&%1