⑴ apache设置静态文件缓存影响cookie
Cookie的主要内容包括名字,值,过期时间,路径和域,路径和域共同构成了cookie的作用范围,相当于一个key-value的返举方式存在于客户端。根据有无设置过期时间可分为 会话Cookie和持久Cookie,不设置过期时间,则是会话Cookie,这个Cookie的生命周期为浏览器会话期间伏世戚,关闭浏览器窗口,cookie就消失,若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏缺陵览器,这些cookie仍然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在浏览器的不同进程间共享。
⑵ 谁有Apache 服务器的配置详细介绍
Apache服务器的设置文件位于/usr/local/apache/conf/目录下,传统上使用三个配置文件httpd.conf,access.conf和srm.conf,来配置Apache服务器的行为。
httpd.conf提供了最基本的服务器配置,是对守护程序httpd如何运行的技术描述;srm.conf是服务器的资源映射文件,告诉服务器各种文件的MIME类型,以及如何支持这些文件;access.conf用于配置服务器的访问权限,控制不同用户和计算机的访问限制;这三个配置文件控制着服务器的各个方面的特性,因此为了正常运行服务器便需要设置好这三个文件。
除了这三个设置文件之外,Apache还使用mime.types文件用于标识不同文件对应的MIME类型, magic文件设置不同MIME类型文件的一些特殊标识,使得Apache 服务器从文档后缀不能判断出文件的MIME 类型时,能通过文件内容中的这些特殊标记来判断文档的MIME类型。
bash-2.02$ ls -l /usr/local/apache/conf
total 100
-rw-r--r-- 1 root wheel 348 Apr 16 16:01 access.conf
-rw-r--r-- 1 root wheel 348 Feb 13 13:33 access.conf.default
-rw-r--r-- 1 root wheel 30331 May 26 08:55 httpd.conf
-rw-r--r-- 1 root wheel 29953 Feb 13 13:33 httpd.conf.default
-rw-r--r-- 1 root wheel 12441 Apr 19 15:42 magic
-rw-r--r-- 1 root wheel 12441 Feb 13 13:33 magic.default
-rw-r--r-- 1 root wheel 7334 Feb 13 13:33 mime.types
-rw-r--r-- 1 root wheel 383 May 13 17:01 srm.conf
-rw-r--r-- 1 root wheel 357 Feb 13 13:33 srm.conf.default
事实上当前版本的Apache将原来httpd.conf、srm.conf与access.conf中的所有配置参数均放在了一个配置文件httpd.conf中,只是为了与以前的版本兼容的原因(使用这三个设置文件的方式来源于NCSA-httpd),才使用三个配置文件。而提供的access.conf和srm.conf文件中没有具体的设置。
由于在新版本的Apache中,所有的设置都被放在了httpd.conf中,因此只需要调整这个文件中的设置。以下使用缺省提供的httpd.conf为例,解释Apache服务器的各个设置选项。然而不必因为它提供设置的参数太多而烦恼,基本上这些参数都很明确,也可以不加改动运行Apache服务器。但如果需要调整Apache服务器的性能,以及增加对某种特性的支持,就需要了解这些设置参数的含义。
关于Apache服务器的性能,在Internet上存在很大的争议,基本上使用Apache的使用者几乎都不怀疑它的优秀性能,Apache也支撑了很多著名的高负载的网站,但是在商业机构的评测中,Apache往往得分不高。很多人指出,在这些评测中,商业Web服务器及其操作系统往往由其专业公司的工程师进行过性能调整,而Free 的操作系统和Web服务器往往就使用其缺省配置或仅仅作很小的更改。需要指出的是,除了操作系统的性能调整之外,Apache 服务器本身的缺省配置绝不是最优化和最高效的,而是要适应几乎所有种类操作系统、所有种类硬件下的设置,多平台的软件不可能为特定平台和特定硬件提供最优化的缺省配置。因此要使用Apache的时候,性能调整是必不可少的。
在商业评测中忽略了的另一个事实是,评测时往往对不同种类的功能进行比较,例如使用Apache的标准CGI 的性能与ISAPI,NSAPI等服务器端API比较,事实上Apache服务器与此可以比较的功能为modperl ,FastCGI,与ASP类似的功能为PHP等等,只不过由于Apache的开放模式,这些功能是由独立的开发组,作为独立的模块来实现的。但是在评测中,测试人员没有加入相应的模块评测其性能。
HTTP守护进程的运行参数
httpd.conf中首先定义了一些httpd守护进程运行时需要的参数,来决定其运行方式和运行环境。
ServerType standalone
ServerType定义服务器的启动方式,缺省值为独立方式standalone,httpd
服务器将由其本身启动,并驻留在主机中监视连接请求。在Linux下将在启动文件 /etc/rc.d/rc.local/init.d/apache中自动启动Web服务器,这种方式是推荐设置。
启动Apache服务器的另一种方式是inet方式,使用超级服务器inetd监视连接请求并启动服务器。当需要使用inetd启动方式时,便需要更改为这个设置,并屏蔽/etc/rc.d/rc.local/init.d/apache文件,以及更改/etc/inetd.conf并重起inetd,那么Apache就能从inetd中启动了。
两种方式的区别是独立方式是由服务器自身管理自己的启动进程,这样在启动时能立即启动服务器的多个副本,每个副本都驻留在内存中,一有连接请求不需要生成子进程就可以立即进行处理,对于客户浏览器的请求反应更快,性能较高。而 inetd方式要由inetd发现有连接请求后才去启动http服务器,由于inetd 要监听太多的端口,因此反应较慢、效率较低,但节约了没有连接请求时Web服务器占用的资源。因此inetd方式只用于偶尔被访问并且不要求访问速度的服务器上。事实上inetd方式不适合http的突发和多连接的特性,因为一个页面可能包含多个图象,而每个图象都会引起一个连接请求,即使虽然访问人数造成教少,但瞬间的连接请求并不少,这就受到inetd性能的限制,甚至会影响由inetd启动的其他服务器程序。
ServerRoot "/usr/local"
ServerRoot用于指定守护进程httpd的运行目录,httpd在启动之后将自动将进程的当前目录改变为这个目录,因此如果设置文件中指定的文件或目录是相对路径,那么真实路径就位于这个ServerRoot定义的路径之下。
由于httpd会经常进行并发的文件操作,就需要使用加锁的方式来保证文件操作不冲突,由于NFS文件系统在文件加锁方面能力有限,因此这个目录应该是本地磁盘文件系统,而不应该使用NFS文件系统。
#LockFile /var/run/httpd.lock
LockFile参数指定了httpd守护进程的加锁文件,一般不需要设置这个参数, Apache服务器将自动在ServerRoot下面的路径中进行操作。但如果ServerRoot为NFS文件系统,便需要使用这个参数指定本地文件系统中的路径。
PidFile /var/run/httpd.pid
PidFile指定的文件将记录httpd守护进程的进程号,由于httpd能自动复制其自身,因此系统中有多个httpd进程,但只有一个进程为最初启动的进程,它为其他进程的父进程,对这个进程发送信号将影响所有的httpd进程。PidFILE定义的文件中就记录httpd父进程的进程号。
ScoreBoardFile /var/run/httpd.scoreboard
httpd使用ScoreBoardFile来维护进程的内部数据,因此通常不需要改变这个参数,除非管理员想在一台计算机上运行几个Apache服务器,这时每个Apache服务器都需要独立的设置文件htt pd.conf,并使用不同的ScoreBoardFile。
#ResourceConfig conf/srm.conf
#AccessConfig conf/access.conf
这两个参数ResourceConfig和AccessConfig,就用于和使用 srm.conf 和 access.conf 设置文件的老版本Apache兼容。如果没有兼容的需要,可以将对应的设置文件指定为/dev/null,这将表示不存在其他设置文件,而仅使用httpd.conf 一个文件来保存所有的设置选项。
Timeout 300
Timeout定义客户程序和服务器连接的超时间隔,超过这个时间间隔(秒)后服务器将断开与客户机的连接。
KeepAlive On
在HTTP 1.0中,一次连接只能作传输一次HTTP请求,而KeepAlive参数用于支持HTTP 1.1版本的一次连接、多次传输功能,这样就可以在一次连接中传递多个HTTP请求。虽然只有较新的浏览器才支持这个功能,但还是打开使用这个选项。
MaxKeepAliveRequests 100
MaxKeepAliveRequests为一次连接可以进行的HTTP请求的最大请求次数。将其值设为0将支持在一次连接内进行无限次的传输请求。事实上没有客户程序在一次连接中请求太多的页面,通常达不到这个上限就完成连接了。
KeepAliveTimeout 15
KeepAliveTimeout测试一次连接中的多次请求传输之间的时间,如果服务器已经完成了一次请求,但一直没有接收到客户程序的下一次请求,在间隔超过了这个参数设置的值之后,服务器就断开连接。
MinSpareServers 5MaxSpareServers 10
在使用子进程处理HTTP请求的Web服务器上,由于要首先生成子进程才能处理客户的请求,因此反应时间就有一点延迟。但是,Apache服务器使用了一个特殊技术来摆脱这个问题,这就是预先生成多个空余的子进程驻留在系统中,一旦有请求出现,就立即使用这些空余的子进程进行处理,这样就不存在生成子进程造成的延迟了。在运行中随着客户请求的增多,启动的子进程会随之增多,但这些服务器副本在处理完一次HTTP请求之后并不立即退出,而是停留在计算机中等待下次请求。但是空余的子进程副本不能光增加不减少,太多的空余子进程没有处理任务,也占用服务器的处理能力,因此也要限制空余副本的数量,使其保持一个合适的数量,使得既能及时回应客户请求,又能减少不必要的进程数量。
因此就可以使用参数MinSpareServers来设置最少的空余子进程数量, 以及使用参数MaxSpareServers 来限制最多的空闲子进程数量,多余的服务器进程副本就会退出。根据服务器的实际情况来进行设置,如果服务器性能较高,并且也被频繁访问,就应该增大这两个参数的设置。对于高负载的专业网站,这两个值应该大致相同,并且等同于系统支持的最多服务器副本数量,也减少不必要的副本退出。
StartServers 5
StartServers参数就是用来设置httpd启动时启动的子进程副本数量,这个参数与上面定义的MinSpareServers和MaxSpareServers参数相关,都是用于启动空闲子进程以提高服务器的反应速度的。这个参数应该设置为前两个值之间的一个数值,小于MinSpareServers和大于MaxS pareServers都没有意义。
MaxClients 150
在另一方面,服务器的能力毕竟是有限的,不可能同时处理无限多的连接请求,因此参数Maxclient s就用于规定服务器支持的最多并发访问的客户数,如果这个值设置得过大,系统在繁忙时不得不在过多的进程之间进行切换来为太多的客户进行服务,这样对每个客户的反应就会减慢,并降低了整体的效率。如果这个值设置的较小,那么系统繁忙时就会拒绝一些客户的连接请求。当服务器性能较高时,就可以适当增加这个值的设置。对于专业网站,应该使用提高服务器效率的策略,因此这个参数不能超过硬件本身的限制,如果频繁出现拒绝访问现象,就说明需要升级服务器硬件了。对于非专业网站,不太在意对客户浏览器的反应速度,或者认为反应速度较慢也比拒绝连接好,就也可以略微超过硬件条件来设置这个参数。
这个参数限制了MinSpareServers和MaxSpareServers的设置,它们不应该大于这个参数的设置。
MaxRequestsPerChild 30
使用子进程的方式提供服务的Web服务,常用的方式是一个子进程为一次连接服务,这样造成的问题就是每次连接都需要生成、退出子进程的系统操作,使得这些额外的处理过程占据了计算机的大量处理能力。因此最好的方式是一个子进程可以为多次连接请求服务,这样就不需要这些生成、退出进程的系统消耗,Apache就采用了这样的方式,一次连接结束后,子进程并不退出,而是停留在系统中等待下一次服务请求,这样就极大的提高了性能。
但由于在处理过程中子进程要不断的申请和释放内存,次数多了就会造成一些内存垃圾,就会影响系统的稳定性,并且影响系统资源的有效利用。因此在一个副本处理过一定次数的请求之后,就可以让这个子进程副本退出,再从原始的httpd进程中重新复制一个干净的副本,这样就能提高系统的稳定性。这样,每个子进程处理服务请求次数由MaxRe questPerChild定义。 缺省的设置值为30,这个值对于具备高稳定性特点的Linux系统来讲是过于保守的设置,可以设置为1000甚至更高,设置为0支持每个副本进行无限次的服务处理。
#Listen 3000
#Listen 12.34.56.78:80
#BindAddress *
Listen参数可以指定服务器除了监视标准的80端口之外,还监视其他端口的HTTP请求。由于FreeBSD系统可以同时拥有多个IP地址,因此也可以指定服务器只听取对某个BindAddress< /B>的IP地址的HTTP请求。如果没有配置这一项,则服务器会回应对所有IP的请求。
即使使用了BindAddress参数,使得服务器只回应对一个IP地址的请求,但是通过使用扩展的Listen参数,仍然可以让HTTP守护进程回应对其他IP地址的请求。此时Listen参数的用法与上面的第二个例子相同。这种比较复杂的用法主要用于设置虚拟主机。此后可以用VirtualHost参数定义对不同IP的虚拟主机,然而这种用法是较早的HTTP 1.0标准中设置虚拟主机的方法,每针对一个虚拟主机就需要一个IP地址,实际上用处并不大。在HTTP 1.1中,增加了对单IP地址多域名的虚拟主机的支持,使得虚拟主机的设置具备更大的意义。
LoadMole mime_magic_mole libexec/apache/mod_mime_magic.so
LoadMole info_mole libexec/apache/mod_info.so
LoadMole speling_mole libexec/apache/mod_speling.so
LoadMole proxy_mole libexec/apache/libproxy.so
LoadMole rewrite_mole libexec/apache/mod_rewrite.so
LoadMole anon_auth_mole libexec/apache/mod_auth_anon.so
LoadMole db_auth_mole libexec/apache/mod_auth_db.so
LoadMole digest_mole libexec/apache/mod_digest.so
LoadMole cern_meta_mole libexec/apache/mod_cern_meta.so
LoadMole expires_mole libexec/apache/mod_expires.so
LoadMole headers_mole libexec/apache/mod_headers.so
LoadMole usertrack_mole libexec/apache/mod_usertrack.so
LoadMole unique_id_mole libexec/apache/mod_unique_id.so
ClearMoleList
AddMole mod_env.c
AddMole mod_log_config.c
AddMole mod_mime_magic.c
AddMole mod_mime.c
AddMole mod_negotiation.c
AddMole mod_status.c
AddMole mod_info.c
AddMole mod_include.c
AddMole mod_autoindex.c
AddMole mod_dir.c
AddMole mod_cgi.c
AddMole mod_asis.c
AddMole mod_imap.c
AddMole mod_actions.c
AddMole mod_speling.c
AddMole mod_userdir.c
AddMole mod_proxy.c
AddMole mod_alias.c
AddMole mod_rewrite.c
AddMole mod_access.c
AddMole mod_auth.c
AddMole mod_auth_anon.c
AddMole mod_auth_db.c
AddMole mod_digest.c
AddMole mod_cern_meta.c
AddMole mod_expires.c
AddMole mod_headers.c
AddMole mod_usertrack.c
AddMole mod_unique_id.c
AddMole mod_so.c
AddMole mod_setenvif.c
Apache服务器的一个重要特性就是其模块化的结构,这不但表现为其能在编译时能通过新的模块加入新的功能,还表现为其模块可以动态加载入http服务程序中,而不必载入不需要的模块。使用Apache的动态加载模块只需要设置好Load Mole和AddMole参数就可以了,这种特性就是Apache的 DSO(Dynamic Shared Object)特性,然而要想充分使用DSO特性仍然不是一个简单的事情,不适当的改动这里的设置就可能造成服务器不能正常启动。因此如果不是要增加或减少服务器提供的功能,就不要改动这里的设置。
上面这些列表就显示了Linux下的缺省Apache服务器支持的模块,事实上很多模块是没有必要的,不必要模块不会被载入内存。模块可以静态连接到pache 服务器内部,也可以这样动态加载,将Apache的特性都编译成动态可加载模块是该Port的做法,而不是Apache的缺省做法,这样就以牺牲很小的性能的同时,带来极大的灵活性。
因而动态可加载的能力还是对性能有轻微的影响,因此可以重新编译Apache,将自己所需要的功能编译进Apache 服务器内部,可以让系统显得更为干净,效率也有轻微的提高。通常仅仅为了这一个目的就重新编译Apache是没有必要的,如果需要增加其他特性而重新编译Apache,不妨在增加其他模块的同时将所有的模块都静态连接入Apache 服务器。有的使用者更喜欢动态加载模块,那么也不妨全部都使用动态加载模块。
这些模块都被放置到/usr/local/apache/libexec/目录下, 每个模块对应Apache服务器的一个特性。详细解释每个模块的功能需要相当多的篇幅,其中比较重要的特性将在后面相应的地方中进行解释,而具体每个模块的功能及用法就需要查看Apache的文档。
#ExtendedStatus On
Apache服务器可以通过特殊的HTTP请求,来报告自身的运行状态,打开这个ExtendedStatus 参数可以让服务器报告更全面的运行状态信息。
⑶ apache伪静态配置 htaccess 放哪里
1.检测Apache是否支持mod_rewrite 通过php提供的phpinfo()函数查看环境配置,通过Ctrl+F查找到“Loaded Moles”,其中列出了所有er已经开启的模块,如果里面包括“mod_rewrite”,则已经支持,不再需要继续设置。
如果没有开启“mod_rewrite”,则打开目录 您的apache安装目录“/apache/conf/” 下的 httpd.conf 文件,通过Ctrl+F查找到“LoadMole rewrite_mole”,将前面的”#”号删除即可。
如果没有查找到,则到“LoadMole” 区域,在最后一行加入“LoadMole rewrite_mole moles/mod_rewrite.so”(必选独占一行),然后重启apache服务器即可。
2.让apache服务器支持.htaccess
修改httpd.conf文件
Options FollowSymLinks
AllowOverride None
改为
Options FollowSymLinks
AllowOverride All
注意:除了要设置上面的地方以后,还得设置一下下面这个(网上很多资料都没有讲到这一块),否则你将会配制失败, 把 DocumentRoot 后面的参数改为你本地网站的目录 例如你网站的根目录为 D:/web/ 则得设置为 DocumentRoot "D:/web/" 也就是修改当前目录
此步骤设置好后也得重启apache服务器才能生效
3.建立.htaccess 文件
新建 htaccess.txt
用记事本 打开,点击文件–另存为,在文件名窗口输入”.htaccess”,然后点击保存。此文件得保存在网站的根目录
4.填写网站伪静态规则 (需要 了解 正则表达式)
<IfMole mod_rewrite.c>
RewriteEngine on
RewriteRule index.html$ index.php
RewriteRule index-([1-9]+[0-9]*).html$ index.php?p=$1
</IfMole>
希望能够帮到你和网上的其它朋友,曾经我也在上面绞尽脑汁。
⑷ Apache 配置
Apache 配置
1、下载apache
2、 ./configure
--prefix=/usr/local/apache2.2.32
--enable-deflate
--enable-headers
--enable-expires
--enable-moles=most
--enable-so
--with-mpm=worker
--enable-rewrite
3、 make
4、make install
配置文件
一、/usr/local/apache/conf/httpd.conf 内容解析
Server root 服务的根目录
Listen 80 监听的端口
Server admin [email protected]管理员邮箱
Servername www.yeyiboy.com 网站名
Documentroot /usr/local/apache/htdocs 站点目录,需改成自己的站点目录
表示根目录拒绝其他人访问
Options FollowSymLinks
AllowOverride None 禁止相关功能
Order deny,allow 不让任何人访问根目录
Deny from all 不让任何人访问根目录
新增加站点目录,必须增加下面六行,否则网站打不开
把站点目录/usr/local/apache2.2.32/htdocs改成自己的站点目录
Options Indexes FollowSymLinks 如去掉Indexes,站点目录如果没有首页也不会暴露站点目录。为了安全,通常配置会去掉。
AllowOverride None
Order allow,deny
Allow from all
DirectoryIndex index.html 指定访问首页,如果有多个首页,都列出,空格隔开
ErrorLog "logs/error_log" 错误日志
去掉include conf/extra/ httpd-mpm.conf和include conf/extra/ httpd-vhosts.conf 前面的#号
二、/usr/local/apache/conf/extra 扩展的配置文件
1、 httpd-mpm.conf
工作模式为prefork模式。默认为该模式。#Apache共两种模式,prefork和worker
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
工作模式为worker模式,编译时已指定为worker模式。
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
2、 httpd-vhosts.conf 配置网站大部分在这里配置
NameVirtualHost *:80 基于域名的服务,一个主机想跑多个网站在这里配置
3、httpd-default.conf 了解
Timeout 300 超时
KeepAlive On 连接保持
MaxKeepAliveRequests 100 最大接受多少个连接
KeepAliveTimeout 5 等待下一个连接时间
AccessFileName .htaccess 设置伪静态
ServerTokens Full 隐藏apache版本
ServerSignature On 隐藏apache版本
FQDN 完整的域名解析
错误报告:httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Syntax OK
解决办法: vim /usr/local/apache/conf/httpd.conf
把 servername www.example.com:80 增加成servername 127.0.0.1:80
⑸ Apache2怎么配置伪静态 详细点 iis我就会 我电脑是xp的装iis比较麻烦
你有正确的规则不,apache的伪静态规则文件应该是http.conf这个文件,iis则是http.ini,把http.conf放在哗型更目者腔录,然后在修改下apache的配置文件,在乱嫌猜conf目录下httpd.conf中找到
LoadMole rewrite_mole moles/mod_rewrite.so,保存就OK
⑹ 如何设置Apache服务器的缓冲区大小
你说的是缓存大小吧
Apache的缓存方式有两种,一种是基于硬盘文件的缓存,由mod_disk_cache实现,另一种是使用内存缓存,由mod_mem_cache实现,不过它们都是依赖mod_cache模块的,mod_cache模块提供了一些缓存配置的指令供它们使用,而mod_file_cache模块是搭配mod_mem_cache模块使用的,下面分别进行介绍。
1、基于硬盘文件的缓存
基于硬盘文件存储的缓存由mod_disk_cache模块实现,先看个简单的配置例子:
<IfMolemod_cache.c>
CacheDefaultExpire86400
<IfMolemod_disk_cache.c>
CacheEnabledisk/
CacheRoot/tmp/apacheCache
CacheDirLevels5
CacheDirLength4
CacheMaxFileSize1048576
CacheMinFileSize10
</IfMole>
</IfMole>
把上面的配置加到Apache的httpd.conf文件中,如果缓存相关的模块都已经编译进了Apache的核心,则无需加载模块,直接就能使用上面的指令。指令的详细说明如下:
CacheDefaultExpire:设定缓存过期的时间(秒),默认是1小时,只有当缓存的文档没有设置过期时间或最后修改时间时这个指令才会生效
CacheEnable:启用缓存,第1个参数是缓存类弄,这里当然是disk了,第2个参数是缓存路径,指的是url路径,这里是缓存所有的东西,直接写上“/”即可,如“/docs”则只缓存/docs下的所有文件
CacheRoot:缓存文件所在的目录,运行Apache的用户(如daemon或nobody)要能对其进行读写,如果不清楚的话可以直接设置成777,请手动建立该目录并设置好访问权限
CacheDirLevels:缓存目录的深度,默认是3,这里设置为5
CacheDirLength:缓存目录名的字符长度,默认是4,这里设置为5
CacheMaxFileSize和CacheMaxFileSize:缓存文件的最大值和最小值(byte),当超过这个范围时将不再缓存,这里设置为1M和10bytes
基于硬盘文件存储的文件基本上就这些内容,设置好后重启Apache应该就能使用了。一切正常的话,可以在缓存目录下看到Apache自动建立的一些目录和缓存的数据文件。
2、基于内存的缓存
基于内存的缓存主要由mod_mem_cache模块实现,还是看个简单的配置吧,这样比较直观:-)
<IfMolemod_cache.c>
<IfMolemod_mem_cache.c>
CacheEnablemem/
MCacheMaxObjectCount20000
MCacheMaxObjectSize1048576
MCacheMaxStreamingBuffer65536
MCacheMinObjectSize10
MCacheRemovalAlgorithmGDSF
MCacheSize131072
</IfMole>
</IfMole>
简单说一下上面一些指令的意思:
CacheEnable:启用缓存,使用基于内存的方式存储
MCacheMaxObjectCount:在内存中最多能存储缓存对象的个数,默认是1009,这里设置为20000
MCacheMaxObjectSize:单个缓存对象最大为1M,默认是10000bytes
MCacheMaxStreamingBuffer:在缓冲区最多能够放置多少的将要被缓存对象的尺寸,这里设置为65536,该值通常小于100000或MCacheMaxObjectSize设置的值
MCacheMinObjectSize:单个缓存对象最小为10bytes,默认为1bytes
MCacheRemovalAlgorithm:清除缓存所使用的算法,默认是GDSF,还有一个是LRU,可以查一下Apache的官方文档,上面有些介绍
MCacheSize:缓存数据最多能使用的内存,单位是kb,默认是100kb,这里设置为128M
保存重启Apache基于内存的缓存系统应该就能生效了,根据需要可以使基于内存的存储或硬盘文件的存储方式一起使用,只要指明不同的URL路径即可。
3、注意事项
使用缓存需要注意如下事项:
要使用缓存,必须使用指令CacheEnable启用它,目前可用的缓存类型为disk或mem,禁止缓存可以使用CacheDisable,如CacheDisable/private
待缓存的URL返回的状态值必须为:200、203、300、301或410
URL的请求方式必须是GET方式
发送请求时,头部中包含“Authorization:”的字符串时,返回的内容将不会被缓存
URL包含查询字符串,如问号?后的那些东西,除非返回的内容包含“Expires:”,否则不会被缓存
如果返回的状态值是200,则返回的头部信息必须包含以下的一种才会被缓存:Etag、Last-Modified、Expires,除非设置了指令CacheIgnoreNoLastModOn
如果返回内容的头部信息“Cache-Control:”中包含“private”,除非设置了指令CacheStorePrivateOn,否则不会被缓存
如果返回内容的头部信息“Cache-Control:”中包含“no-sotre”,除非设置了指令CacheStoreNoStoreOn,否则不会被缓存
如果返回内容的头部信息“Vary:”中包含了“*”,不会被缓存
⑺ apache2.2 反向代理 配置css js静态文件
1.先去掉下面两行的注释
LoadMole proxy_mole
moles/mod_proxy.so
LoadMole proxy_http_mole
moles/mod_proxy_http.so
2.然后在最后增加
ProxyPass /images !
ProxyPass /css !
ProxyPass /js !
ProxyPass / http://localhost:8080/这个也可以写为:
ProxyPass
/oa
http://localhost:8080/oa
ProxyPassReverse
/oa
http://localhost:8080/oa
也可以连续增加以上两行,就是多个tomcat启动
ProxyPass /meb http://192.168.6.103:8081/meb
ProxyPassReverse /meb http://192.168.6.103:8081/meb
⑻ apache-httpd的三种模式
apache httpd-2.4
新增模块;
mod_proxy_fcgi(可提供 fcgi 代理)
mod_ratelimit(限制用户带宽)
mod_request(请求模块,对请求做过滤)
mod_remoteip(匹配客户端的 IP 地址)
对于基于 IP 的访问控制做了修改,不再支持 allow,deny,order 机制,而是统一使用 require进行
还新增以下几条新特性;
1、MPM 支持在运行时装载;不过要开启这慧信种特性,在编译安装要启用这三种功能;
--enable-mpms-shared=all --with-mpm=event
2、支持 event
3、支持异步读写
4、在每个模块及每个目录上指定日志级别
5、增强版的表达式分析器
6、每请求配置:<If>, <Elseif>
7、毫秒级别的 keepalive timeout
8、基于 FQDN 的虚拟主机不再需要 NameVirtualHost 指令
9、支持使用自定义变量
安装时HTTPd 可以添加许多模块
相关模块解析:
--enable-so:支持动态共享模块(即打开 DSO 支持)
--enable-rewrite:支持 url 重写
--enable-ssl:前基轮支持 ssl
--with-ssl=/usr/local/openssl:指定 ssl 安装位置
--enable-cgi:启用 cgi
--enable-cgid:MPM 使用的是 event 或 worker 要启用 cgid
--enable-moles=most:明确指明要静态编译到 httpd 二进制文件的模块,<MODULE-LIST>为
空格分隔的模块名列表、all 或者 most,all 表示包含所有模块,most 表示包含大部分常用模
块
--enable-mpms-shared=all:启用 MPM 所有支持的模式,这样 event、worker、prefork 就会以
模块化的方式安装,要用哪个就在 httpd.conf 里配置就好了。
--with-mpm=event:指定启用的 mpm 模式,默认使用 enevt 模式,在 apache 的早期版本 2.0
默认 prefork,2.2 版本是 worker,2.4 版本是 event.
--with-pcre=/usr/local/pcre:支持 pcre
--with-z=/usr/local/zlib:使用 zlib 压缩库
--with-apr=/usr/local/apr:指定 apr 的安装路径
--with-apr-util=/usr/local/apr-util:指定 apr-util 的安装路径
--enable-expires:激活彧通过配置文件控制 HTTP 的“Expires:”和“Cache-Control:”头内容,即
对网站图片、js、css 等内容,提供客户端浏览器缓存的设置。这个是 apache 调优的一个重
要选项之一。
--enable-deflate:提供对内容的压缩传输编码支持,一般是 html、js、css 等内容的站点。使
用此参数会打打提高传输速度,提升访问者访问的体验。在生产环境中,这是 apache 调优
的一个重要选项之一。
Apache 的优化配置:
apache 所运行的硬件环境都是对性能影响最大的因素,即使不能对锋桥硬件进行升级,也最好
给 apache 一个单独的主机以免受到其他应用的干扰。各个硬件指标中,对性能影响最大的
是内存,对于静态内容(图片、javascript 文件、css 文件等),它决定了 apache 可以缓存多
少内容,它缓存的内容越多,在硬盘上读取内容的机会就越少,大内存可以极大提高静态站
点的速度;对动态高负载站点来说,每个请求保存的时间更多一些,apache 的 mpm 模块会
为每个请求派生出相应的进程或线程分别处理,而进程或线程的数量与内存的消耗近似成正
比,因此增大内存对提高动态站点的负载和运行速度也极为有利
其次是硬盘的速度,静态站点尤为突出,apache 不断的在读取文件并发送给相应的请求,
硬盘的读写是极其频繁的;动态站点也要不断的加载 web 程序(php 等),一个请求甚至要读
取十几个文件才能处理完成,因此尽可能的提高硬盘速度和质量对提高 apache 的性能是有
积极意义的。
最后是 cpu 和网络,cpu 影响的是 web 程序执行速度,网络影响流量大小。
apache 的工作模式:
Apache HTTP 服务器被设计为一个强大的、灵活的能够在多种平台以及不同环境下工作的服
务器。这种模块化的设计就叫做“多进程处理模块”(Multi-Processing Mole,MPM),也叫
做工作模式。
Prefork 模式(一个非线程型的):
其主要工作方式是:当 Apache 服务器启动后,mpm_prefork 模块会预先创建多个子进程(默
认为 5 个),每个子进程只有一个线程,当接收到客户端的请求后,mpm_prefork 模块再将
请求转交给子进程处理,并且每个子进程同时只能用于处理单个请求。如果当前的请求数将
超过预先创建的子进程数时,mpm_prefork 模块就会创建新的子进程来处理额外的请求。
Apache 总是试图保持一些备用的或者是空闲的子进程用于迎接即将到来的请求。这样客户
端的请求就不需要在接收后等候子进程的产生。
由于在 mpm_prefork 模块中,每个请求对应一个子进程,因此其占用的系统资源相对其他
两种模块而言较多。不过 mpm_prefork 模块的优点在于它的每个子进程都会独立处理对应
的单个请求,这样,如果其中一个请求出现问题就不会影响到其他请求。Prefork 在效率上
要比 Worker 要高,但是内存使用大得多不擅长处理高并发的场景。
Apache 在 prefork 工作模式下影响性能的重要参数说明
# prefork MPM
<IfMole mpm_prefork_mole>
StartServers 5
#apache 启动时候默认开始的子进程数
MinSpareServers 5
#最小的闲置子进程数
MaxSpareServers 10
#最大的闲置子进程数
MaxRequestWorkers 250
#MaxRequestWorkers 设 置 了 允 许 同 时 的 最 大 接 入 请 求 数 量 。 任 何 超 过MaxRequestWorkers 限制的请求将进入等候队列,在 apache2.3.1 以前的版本
MaxRequestWorkers 被称为 MaxClients,旧的名字仍旧被支持。
MaxConnectionsPerChild 500
#设置的是每个子进程可处理的请求数。每个子进程在处理了“MaxConnectionsPerChild”
个请求后将自动销毁。0 意味着无限,即子进程永不销毁。虽然缺省设为 0 可以使每个
子进程处理更多的请求,但如果设成非零值也有两点重要的好处:1、可防止意外的内
存泄漏。2、在服务器负载下降的时侯会自动减少子进程数。因此,可根据服务器的负
载来调整这个值。在 Apache2.3.9 之前称之为 MaxRequestsPerChild。
</IfMole>
注 1:MaxRequestWorkers 是这些指令中最为重要的一个,设定的是 Apache 可以同时处理
的请求,是对 Apache 性能影响最大的参数。如果请求总数已达到这个值(可通过 ps -ef|grep
http|wc -l 来确认),那么后面的请求就要排队,直到某个已处理请求完毕。这就是系统资源
还剩下很多而 HTTP 访问却很慢的主要原因。虽然理论上这个值越大,可以处理的请求就越
多,建议将初始值设为(以 Mb 为单位的最大物理内存/2),然后根据负载情况进行动态调整。
比如一台 4G 内存的机器,那么初始值就是 4000/2=2000。
注 2:prefork 控制进程在最初建立“StartServers”个子进程后,为了满足 MinSpareServers 设
置的需要创建一个进程,等待一秒钟,继续创建两 个,再等待一秒钟,继续创建四个……如
此按指数级增加创建的进程数,最多达到每秒 32 个,直到满足 MinSpareServers 设置的值为
止。这种模式 可以不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能。
MaxSpareServers 设置了最大的空闲进程数,如果空闲进程数大于这个 值,Apache 会自动 kill
掉一些多余进程。这个值不要设得过大,但如果设的值比 MinSpareServers 小,Apache 会自
动把其调整为 MinSpareServers+1。如果站点负载较大,可考虑同时加大 MinSpareServers 和
MaxSpareServers。
注 3:ServerLimit 和 MaxClients(MaxRequestWorkers)有什么区别呢?
是因为在 apache1 时代,控制最大进程数只有 MaxClients 这个参数,并且这个参数最大值为
256,并且是写死了的,试图设置为超过 256 是无效的,这是由于 apache1 时代的服务器硬
件限制的。但是 apache2 时代由于服务器硬件的升级,硬件已经不再是限制,所以使用
ServerLimit 这个参数来控制最大进程数,ServerLimit 值>=MaxClient 值才有效。ServerLimit
要放在 MaxClients 之前,值要不小于 MaxClients。
注 4:查看 Apache 加载的模块
[root@www ~]#apachectl -t -D DUMP_MODULES
或
[root@www ~]# apachectl -M
或
[root@www ~]# apachectl –l (小写 L,只显示静态模块)
如何查看 Apache 的工作模式呢?可以使用 httpd -V 命令查看,另外使用 httpd -l 也可以查
看到
注 5:如何修改 prefork 参数和启用 prefork 模式
1.[root@www ~]# vi /usr/local/http-2.4.23/conf/extra/httpd-mpm.conf
2.[root@www ~]# vi /usr/local/http-2.4.23/conf/httpd.conf
LoadMole mpm_prefork_mole moles/mod_mpm_prefork.so
Include conf/extra/httpd-mpm.conf
3 重启httpd
Worker 模式(多线程多进程):
和 prefork 模式相比,worker 使用了多进程和多线程的混合模式,worker 模式也同样会先预
派生一些子进程,然后每个子进程创建一些线程,同时包括一个监听线程,每个请求过来会
被分配到一个线程来服务。线程比起进程会更轻量,因为线程是通过共享父进程的内存空间,
因此,内存的占用会减少一些,在高并发的场景下会比 prefork 有更多可用的线程,表现会
更优秀一些;另外,如果一个线程出现了问题也会导致同一进程下的线程出现问题,如果是
多个线程出现问题,也只是影响 Apache 的一部分,而不是全部。由于用到多进程多线程,
需要考虑到线程的安全了,在使用 keep-alive 长连接的时候,某个线程会一直被占用,即使
中间没有请求,需要等待到超时才会被释放(该问题在 prefork 模式下也存在)
总的来说,prefork 方式速度要稍高于 worker,然而它需要的 cpu 和 memory 资源也稍多于
woker。
Apache 在 worker 工作模式下影响性能的重要参数说明
# worker MPM
<IfMole mpm_worker_mole>
StartServers 3
#apache 启动时候默认开始的子进程数
MinSpareThreads 75
#最小空闲数量的工作线程
MaxSpareThreads 250
#最大空闲数量的工作线程
ThreadsPerChild 25
#每个子进程产生的线程数量
MaxRequestWorkers 400
#与 prefork 模式相同
MaxConnectionsPerChild 0
#与 prefork 模式相同
</IfMole>
注 1:Worker 由主控制进程生成“StartServers”个子进程,每个子进程中包含固定的
ThreadsPerChild 线程数,各个线程独立地处理请求。同样, 为了不在请求到来时再生成线
程,MinSpareThreads 和 MaxSpareThreads 设置了最少和最多的空闲线程数;
而 MaxRequestWorkers 设置了同时连入的 clients 最大总数。如果现有子进程中的线程总数不
能满足负载,控制进程将派生新的子进程
MinSpareThreads 和 MaxSpareThreads 的最大缺省值分别是 75 和 250。这两个参数对 Apache
的性能影响并不大,可以按照实际情况相应调节 。
注 2:ThreadsPerChild 是 worker MPM 中与性能相关最密切的指令。ThreadsPerChild 的最大
缺省值是 64,如果负载较大,64 也是不够的。这时要显式使用 ThreadLimit 指令,它的最大
缺省值是 20000。
注 3:Worker 模式下所能同时处理的请求总数是由子进程总数乘以 ThreadsPerChild 值决定
的,应该大于等于 MaxRequestWorkers。如果负载很大,现有的子进程数不能满足时,控制
进程会派生新的子进程。默认最大的子进程总数是 16,加大时 也需要显式声明 ServerLimit
(系统配置的最大进程数量,最大值是20000)。需要注意的是,如果显式声明了 ServerLimit,
那么它乘以 ThreadsPerChild的值必须大于等于MaxRequestWorkers,而且MaxRequestWorkers
必须是 ThreadsPerChild 的整数倍,否则 Apache 将会自动调节到一个相应值。
注 4:进程与线程的区别
线程是指进程内的一个执行单元,也是进程内的可调度实体.
与进程的区别:
(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程
有自己独立的地址空间;
(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源
(3)线程是处理器调度的基本单位,但进程不是.
(4)二者均可并发执行.
进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对
应用的并发性。
进程和线程的区别在于:
简而言之,一个程序至少有一个进程,一个进程至少有一个线程.
线程的划分尺度小于进程,使得多线程程序的并发性高。
另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程
序的运行效率。
Event 模式:
这是 Apache 最新的工作模式,是 worker 模式的变种,它把服务进程从连接中分离出来,一
worker 模式不同的是在于它解决了 keep-alive 长连接的时候占用线程资源被浪费的问题,在
event 工作模式中,会有一些专门的线程用来管理这些 keep-alive 类型的线程,当有真实请
求过来的时候,将请求传递给服务器的线程,执行完毕后,又允许它释放。这增强了在高并
发场景下的请求处理。event 模式不能很好的支持 https 的访问(HTTP 认证相关的问题)。
⑼ apache web服务器怎么配置图片缓存
LoadMole cache_mole moles/mod_cache.so
LoadMole mem_cache_mole moles/mod_mem_cache.so
<IfMole mod_cache.c>
<IfMole mod_mem_cache.c>
CacheEnable mem /
# cache 40MB
MCacheSize 80960
MCacheMaxObjectCount 21000
MCacheMaxStreamingBuffer 65536
MCacheMinObjectSize 1
MCacheMaxObjectSize 74000
###GDSF 基于缓弯历存命中率和文档大小计算优先级。在必要时,优先级最低的文档被移出缓饥雀存
##MCacheRemovalAlgorithm GDSF
#LRU 指定最长时间没有用到的对象将在必要的时候移出缓存
MCacheRemovalAlgorithm LRU
</IfMole>
##传输压缩
LoadMole deflate_mole moles/mod_deflate.so
<IfMole mod_deflate.c>烂闹早
DeflateMemLevel 7
DeflateWindowSize 15
DeflateBufferSize 8096
DeflateCompressionLevel 7
AddOutputFilterByType DEFLATE DEFLATE text/html text/plain application/x-httpd-php application/x-javascript text/css
AddOutputFilter DEFLATE css js php xml js html
AddOutputFilter DEFLATE css #压缩css文件
AddOutputFilter DEFLATE js #压缩js文件
</IfMole>