Apache常见问题汇总

发布于 2022-09-07 05:55:06 字数 8823 浏览 13 评论 1

Apache虚拟主机配置解释 NameVirtualHost *:80
  
<VirtualHost *:80>
     ServerAdmin webmaster@linuxtone.org  #网站管理员邮件地址
     DocumentRoot "/data/www/wwwroot"  #网站存放的根目录
      ServerName www.chinaunix.org      #网站域名
     ServerAlias  chinaunix.org.cn bbs.chinaunix.org#网站域名别名
#   ErrorLog /data/logs/error-www.chinaunix.org_log   #记录错误日志
     CustomLog "|/usr/sbin/cronolog /data/logs/access_www.chinaunix.org.org.%Y%m%d" combined env=!dontlog #记录网  站日志
</VirtualHost>

Apache 如何防盗链?
首先确定已经加载apache rewrite模块
LoadModule rewrite_module modules/mod_rewrite.so

1) 利用rewrite 确认你的apache 能使用rewrite mod

  RewriteEngine on
   RewriteCond %{HTTP_REFERER} !^http://linuxtone.org/.*$      [NC]
   RewriteCond %{HTTP_REFERER} !^http://linuxtone.org$      [NC]
   RewriteCond %{HTTP_REFERER} !^http://www.linuxtone.org/.*$      [NC]
   RewriteCond %{HTTP_REFERER} !^http://www.linuxtone.org$      [NC]
   RewriteRule .*.(gif|jpb|png|css|js|swf])$ [R,NC] #指定图片.
   

2) 利用SetEnvIfNoCase 和 access     SetEnvIfNoCase Referer "^http://linuxtone.org" local_ref=1
     SetEnvIfNoCase Referer "^http://www.linuxtone.org" local_ref=1
     <FilesMatch ".(gif|jpb|png|css|js|swf)">
         Order Allow,Deny
         Allow from env=local_ref
     </FilesMatch>

需要多大内存合适?
  mod_status 查看某一时间下所运行的apache进程总数.
  RAM=运行apache进程平均所需的内存容量x最大负荷量(同时服务的客户端的最大数目)
  参考:http://docs.huihoo.com/apache/httpd/2.0-cn/misc/perf-tuning.html
  最新的status配置在:/usr/local/apache2/conf/extra/httpd-info.conf  配置
  且可以看出网站当前运行状态:   <Location /server-status>
      SetHandler  server-status
   </Location>
   ExtendedStatus on
   

http://servername/server-status 查看结果

最佳化符号链接
为了启用最严格的安全防护,如果很少用符号连接,请使用Options SymLinksIfOwnerMatch或Options -FollowSyLinks
为了最佳性能,使用:Options FollowSyLinks (注:如果要考虑安全,就永远不要允许遵循符号连接)

尽量降低.htaccess文件对性能的影响
   只有在必要目录中才启用AllowOverride,并告知apache不要浪费时间在别的位置查找.htaccess文件:
  AllowOverride None
  然后以<Directory>区块启用必要的.htaccess文件.

停止使用网页内容协商
停用非必要的内容协商,如果真的需要使用网页内容协容,请使用type-map处理器而非MultiViews选项
Options -MultiViews
AddHandler type-map var
如果多语言网站,应该使用type-map处理器而非MultiViews指令.

使用mod_proxy分担服务间的负载
  ProxyPass及ProxyPassReverse让apache从其它服务器的截取网页内空.
  ProxyPass /other/ http://other.server.com
  ProxyPassReverse /other/ http://other.server.com

DNS轮询试(DNS round-robin) 将请求平均分配给服务器
www.chinaunix.org. 86400  IN  A 192.168.0.2
www.chinaunix.org. 86400  IN  A 192.168.0.3
www.chinaunix.org. 86400  IN  A 192.168.0.4   //增加多个A记录.

将目录列表存入高带缓存区.
如果想提供目录列表,但又要减少对性能的影响,请使用IndexOptions的TrackModified,让游览器将自动产生的目录索引存入高速缓存区. IndexOptions +TrackModified

WEB应用的容量规划
Apache主要是一个内存消耗型的服务应用经验公式:
apache_max_process_with_good_perfermance < (total_hardware_memory / apache_memory_per_process ) * 2
apache_max_process = apache_max_process_with_good_perfermance * 1.5

为什么会有一个apache_max_process_with_good_perfermance和apache_max_process呢?原因是在低负载下系统可以使用更多的内存用于文件系统的缓存,从而进一步提高单个请求的响应速度。在高负载下,系统的单个请求响应速度会慢不少,而超过 apache_max_process,系统会因为开始使用硬盘做虚拟内存交换空间而导致系统效率急剧下降。此外,同样的服务:2G内存的机器的 apache_max_process一般只设置到1G内存的1.7倍,因为Apache本身会因为进程过多导致性能下降。

例子1:
一个apache + mod_php的服务器:一个apache进程一般需要4M内存
因此在一个1G内存的机器上:apache_max_process_with_good_perfermance < (1g / 4m) * 2 = 500
apache_max_process = 500 * 1.5 = 750
所以规划你的应用让服务尽量跑在500个进程以下以保持比较高的效率,并设置Apache的软上限在800个。

例子2:
一个apache + mod_resin的服务器: 一个apache进程一般需要2M内存
在一个2G内存的机器上:
apache_max_process_with_good_perfermance < (2g / 2m ) * 2 = 2000
apache_max_process = 2000 * 1.5 = 3000
以上估算都是按小文件服务估算的(一个请求一般大小在20k以下)。对于文件下载类型站点,可能还会受其他因素:比如带宽等的影响

设置正确的文件使用权限.
   在serverRoot下的bin目录应该属于root用户及root组,而且其文件权限应设为755(rwxr-xr-x).其中在任何情况下,其他所含的文件也应该属于root.root用户和组。而且文件权限也是755。(数据页面也要设置成755的权限)

隐藏apache版本号。
大家可以看到sina所使用的apache是2.0.54
# curl -I www.sina.com.cn
HTTP/1.0 200 OK
Date: Fri, 30 May 2008 12:36:30 GMT
Server: Apache/2.0.54 (Unix)
Last-Modified: Fri, 30 May 2008 12:05:34 GMT
Accept-Ranges: bytes
X-Powered-By: mod_xlayout_jh/0.0.1vhs.markII.remix
Cache-Control: max-age=60
Expires: Fri, 30 May 2008 12:37:30 GMT
Vary: Accept-Encoding
Content-Type: text/html
Age: 5
X-Cache: HIT from 153-175.sina.com.cn
nnCoection: close
Connection: Keep-Alive
大家可以用下面语句来让人看不到你apache版本号      ServerSignature off  
      ServerTokens prod //禁止显示apache版本号。

大家在看看 Server: Apache (Unix)
# curl -I www.sina.com.cn
HTTP/1.0 200 OK
Date: Fri, 30 May 2008 12:36:30 GMT
Server: Apache (Unix)
Last-Modified: Fri, 30 May 2008 12:05:34 GMT
Accept-Ranges: bytes
X-Powered-By: mod_xlayout_jh/0.0.1vhs.markII.remix
Cache-Control: max-age=60
Expires: Fri, 30 May 2008 12:37:30 GMT
Vary: Accept-Encoding
Content-Type: text/html
Age: 5
X-Cache: HIT from 153-175.sina.com.cn
nnCoection: close
Connection: Keep-Alive

禁止搜索引擎服务器(搜索机器人)
  搜索机器人通过ROBOTS在网络上沿着网页上的链接(一般是http和src链接)不断抓取资料建立自己的数据库。
在数据页面根目录。比如( /usr/local/apache/var/html)下创建 robots.txt文本文件
然后编辑以下内容   User-agent: *
   Disallow: /

保存即可。

php模块精简压缩。
编译完,php的时候进入 #cd /opt/app/apache2/modules
#strip libphp5.so // 这样就能把一些调试信息从模块中删除掉,减少libphp5.so模块容量
   

设定默认的“收藏夹图标”
请将默认的favicon.ico 文件放到ServerRoot下的/icons/字目录中,并在服务器配置文件中想要作用的范围内(例如在特定的<VirtualHost>区块中,或在所有的<VirtualHost>区快之外)加入下面内容   AddType image/x-ion   .ico
   <Files favion.ico>
    ErrorDocument 404 /icon/favicon.ico
   </Files>

..............预留即将编写完成!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

别在捏我脸啦 2022-09-11 00:29:17

{:3_191:}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文