Apache中如何配置httpd-2.2
这篇文章给大家分享的是有关Apache中如何配置httpd-2.2的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一,其服务名为httpd。apache有很多设置和调优 的注意事项。
Listen[IP:]port
此指令可以出现多次, 用于指定监听多个不同的套接字:
Listen80Listen192.168.1.116:80802、配置文件中使用的 keep alive
目前多数的浏览器都请求服务器保持持续连接,这种功能就称为“KeepAlive”,它是HTTP1.1中的标准规格,一般是用来强化服务器的性能。在使用保持连接功能时,设置客户一次请求连接能影响文件的最大上限,建议把默认值设为ON,以便提高访问性能。但当使用负载均衡时,会影响负载均衡的效果,在未断开连接之前,同义客户端始终被定向到同一台服务器。
KeepAlive{On|Off}KeepAliveTimeout2#超时时间MaxKeepAliveRequests50#长连接最大请求数3、MPM
#判定模块是否存在StartServers:默认启动的工作进程数;#不包括主进程,主进程只是负责子进程的创建回收等MinSpareServers:最少空闲进程数;MaxSpareServers:最大空闲进程数;ServerLimit:最大活动进程数;MaxClients:并发请求的最大数;#请求连接进来不一定会活动,要小于等于serverlimitMaxRequestsPerChild:每个子进程在生命周期内所能够服务的最多请求个数;prefork.c>StartServers:启动的子进程的个数MaxClients:并发请求的最大数;MinSpareThreads:最小空闲线程数;MaxSpareThreads:最大空闲线程数;ThreadsPerChild:每个子进程可生成的线程数;MaxRequestsPerChild:每个子进程在生命周期内所能够服务的最多请求个数,0表示不限定;prefork.c>4、DSO模块加载方式
LoadModulemodule_name/path/to/module
如果使用相对路径,则对于ServerRoot所定义的位置而言;例如:
LoadModulephp5_module/usr/lib64/httpd/modules/php5.so
让服务重载配置文件方能生效;
httpd-M:列出已经装载的所有DSO及非DSO模块httpd-l:列出支持使用的非DSO模块
默认使用prefork模块,若想使用worker,则修改脚本配置文件:
[root@localhostconf]#vim/etc/sysconfig/httpd#HTTPD=/usr/sbin/httpd.worker#启用此项,修改所使用的二进制程序5、配置站点根目录
DocumentRoot/path/to/somewhere
Apache服务器存放网页的路径,默认所有要求提供HTTP服务的连接,都以这个目录为主目录,默认为 /var/www/html。
6、配置页面访问属性"/path/to/somewhere">Options:Indexes:缺少指定的默认页面时,允许将目录中的所有文件以列表形式返回给用户,危险;FollowSymLinks:允许跟随符号链接所指向的原始文件;None:所有都不启用;All:所有都启用;ExecCGI:允许使用mod_cgi模块执行CGI脚本;Includes:允许使用mod_include模块实现服务器端包含(SSI);MultiViews:允许使用mod_negotiation实现内容协商;SymLinksIfOwnerMatch:在链接文件属主属组与原始文件的属主属组相同时,允许跟随符号链接所指向的原始文件;可以配置网站目录下的访问属性,使用"path">可以基于正则表达式的匹配,但是一般不建议使用,会耗费时间。类似的指令还有:"">:配置URL访问属性,与相似(可以配置像内生的status页面或者定义了别名的路径等);"">:限定单个文件的访问属性;"">:相当于Location~,但一般建议使用此配置进行正则匹配;
如果某要配置其属性的URL能映射到某具体文件系统路径,建议使用。
7、基于主机的访问控制"/path/to/somewhere">OptionsAllowOverrideNone#AllowOverride表示以下基于ip的访问控制是否被禁用,none表示不被禁用OrderDeny,Allow#后面的表示默认规则AllowDeny
基于IP控制:
AllowfromDenyfromIP,NetworkAddress172.16172.16.0.0172.16.0.0/16172.16.0.0/255.255.0.0
二者都匹配或二者都无匹配项时,则以后者为准;否则,则以匹配到的为准;
8、定义默认主页面DirectoryIndexindex.phpindex.htmlhome.htmldefault.html#自左而右依次找9、用户主页
如果期望让每个用户都可以创建个人站点:http://Server_IP/~Username/
userdirdisablied:禁止userdirpublic_html:public_html是用户家目录下的目录名称,所有位于此目录中的文件均可通过前述的访问路径进行访问
配置用户主页示例:
[root@localhostconf]#vimhttpd.conf#首先在配置文件中启用以下选项366#UserDirdisabled367368UserDirpublic_html[root@localhosthttpd]#servicehttpdreload[root@localhostconf]#useraddfeiyu[root@localhostconf]#su-feiyu[feiyu@localhost~]$mkdirpublic_html[feiyu@localhost~]$cdpublic_html/[feiyu@localhostpublic_html]$echo"hellofeiyu">index.html
此时可以访问了。但apache用户没有权限读取文件,所以还得定义访问权限
[feiyu@localhost~]$ls-ld/home/feiyu/drwx------.6feiyufeiyu4096Feb1520:42/home/feiyu/[feiyu@localhost~]$setfacl-mu:apache:x/home/feiyu/[feiyu@localhost~]$getfacl/home/feiyu/getfacl:Removingleading'/'fromabsolutepathnames#file:home/feiyu/#owner:feiyu#group:feiyuuser::rwxuser:apache:--xgroup::---mask::--xother::---[feiyu@localhost~]$curl192.168.1.117/~feiyu/hellofeiyu10、配置日志功能
默认日志目录:/var/log/httpd/
access.log:访问日志,其需要记录的内容需要自定义error.log:错误日志
访问日志:CustomLog “/path/to/access_log_file” Format_Name #CustomLog自定义访问日志路径LogFormat Format_String Format_Name
%h:客户端地址%l:远程登录名,通常为-%u:认证时的远程用户名,没有认证时为-%t:收到请求时的时间;%r:请求报文的起始行;%>s:响应状态码;%b:响应报文的长度,单位为字节%{Header_Name}i:记录指定请求报文首部的内容(value);
详情请参考:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats
错误日志: ErrorLog
11、路径别名Alias/alias/"/path/to/somewhere/"
意味着访问http://Server_IP/alias/时,其页面文件来自于/path/to/somewhere这个位置; 注意:前后路径要一致,结尾都有”/”或者都没有
12、设定默认字符集AddDefaultCharsetUTF-8
定义cgi脚本路径别名:
CGI:CommonGatewayInterface协议(执行某些文件时要以管理员的权限执行,已经很少被使用了)13、CGI脚本路径别名
CGI:CommonGatewayInterface协议(执行某些文件时要以管理员的权限执行,已经很少被使用了)
定义cgi脚本路径别名:
ScriptAlias/URL/"/path/to/somewhere/"#使用此种方法定义文件则被使用cgi协议执行或者显式使用execcgi14、基于用户的访问控制
当你的网站或者站点的某个路径只想让你授权的用户访问时,就可以使用基于用户的访问控制。
虚拟用户:可以使用文件,SQL数据库或者ldap等机制进行认证。认证类型(auth):basic: 基本认证,帐号和密码明文发送;
digest:摘要认证,hash编程之后发送,大多浏览器不支持;
认证提供者(authentication provider):帐号和密码的存放位置
授权机制(authorization):根据什么进行授权
例:基于文件,做基本认证,根据用户和组进行授权
使用htpasswd命令生成认证库
htpasswd:-c#第一次使用-c创建新文件,不是第一次不要使用此选项-m#用户密码使用MD5加密后存放-s#用户密码使用SHA加密后存放-p#用户密码不加密-d#禁用一个账户-e#启用一个账户[root@localhostfin]#htpasswd-c-m/etc/httpd/conf/.htpasswdfeiyu#第一次需要使用-c选项创建文件Newpassword:Re-typenewpassword:Addingpasswordforuserfeiyu[root@localhostfin]#htpasswd-m/etc/httpd/conf/.htpasswdfeiyu1Newpassword:Re-typenewpassword:Addingpasswordforuserfeiyu1
配置认证机制
"/www/htdocs/fin">OptionsNoneAllowOverrideAuthConfigAuthTypeBasicAuthName"PrivateArea"#AuthBasicProviderfile#可以不用指,默认为文件AuthUserFile/etc/httpd/conf/.htpasswd#所使用的认证文件Requirevalid-user#允许文件中的所有合法账号
访问界面如下所示:
基于组进行认证
先创建用户再创建组文件:
组文件格式:组名:用户1用户2用户3"/www/htdocs/fin">OptionsNoneAllowOverrideAuthConfigAuthTypeBasicAuthName"PrivateArea"#AuthBasicProviderfileAuthUserFile/etc/httpd/conf/.htpasswdAuthGroupFile/etc/httpd/conf/.htgroup#所使用的组文件RequiregroupGroupName">15、虚拟主机
虚拟主机意即一个物理服务器提供多个站点,以前刚建站时使用的是阿里云的免费虚拟主机,我想应该就是基于此方法配置的。虚拟主机的实现方法有三种:
基于不同的IP实现不同的虚拟主机:变化IP
基于不同的port实现不同的虚拟主机:变化port
基于不同的FQDN实现不同的虚拟主机:变化ServerName的参数
配置使用虚拟主机:
(1)注释中心主机,并启用相关配置
[root@localhosthttp]#vim/etc/httpd/conf/httpd.confDocumentRoot"/var/www/html"#注释中心主机NameVirtualHost*:80#使用基于域名的虚拟主机时需要启动此项,并且下面的配置与其保持一致,在httpd-2.4中不需要使用
(2)基于ip的虚拟主机:
ServerNamewww.feiyu1.comDocumentRoot"/var/www/html/feiyu1"ServerNamewww.feiyu2.comDocumentRoot"/var/www/html/feiyu2"
(3)基于端口的虚拟主机:
ServerNamewww.feiyu1.comDocumentRoot"/var/www/html/feiyu1"
NameVirtualHost*:80ServerNamewww.feiyu1.comDocumentRoot"/var/www/html/feiyu1"CustomLog"/var/log/httpd/feiyu1-access_log"combinedServerNamewww.feiyu2.comDocumentRoot"/var/www/html/feiyu2"CustomLog"/var/log/httpd/feiyu2-access_log"combined16、启用 https 协议
https是在http的基础上进行ssl/tls加密实现的结果,启用https固然更安全,不会存在流量劫持等风险,但使用https就不再是三次握手了,它会增加建立连接的时间。
http与https首次请求对比图:
http: 文本协议,80/tcphttps: 二进制格式的协议, 443/tcpSSL握手要完成的工作:
交换协议版本号
选择双方都支持的加密方式
对两端实现身份验正
密钥交换
SSL会话基于IP地址进行,不支持在基于FQDN的虚拟主机上实现,所以在只有一个公网IP的服务器上使用虚拟主机时,只能为一个站点使用https。
配置支持https:
(1)安装httpd支持ssl模块
[root@localhost~]#yuminstallmod_ssl-y
(2)自建CA
[root@localhost~]#cd/etc/pki/CA[root@localhost~]#(umask077;opensslgenrsa-outprivate/cakey.pem2048)[root@localhost~]#opensslreq-new-x509-keyprivate/cakey.pem-outcacert.pem-days365
(3)生成私钥
[root@localhost~]#cd/etc/httpd/conf/[root@localhost~]#mkdirssl[root@localhost~]#cdssl[root@localhost~]#(umask077;opensslgenrsa-outhttpd.key1024)
(4)生成证书申请
[root@localhost~]#opensslreq-new-keyhttpd.key-outhttpd.csr
(5)CA签署证书
[root@localhost~]#opensslca-inhttpd.csr-outhttpd.crt-days365
(6)修改httpd的ssl配置文件
[root@localhost~]#vim/etc/httpd/conf.d/ssl.confDocumentRoot"/var/www/html/feiyu1"ServerNamewww.feiyu.comSSLCertificateFile/etc/httpd/conf/ssl/httpd.crtSSLCertificateKeyFile/etc/httpd/conf/ssl/httpd.key
(7)验证导入浏览器
验证,可以使用以下命令进行验证或者将证书导入到浏览器并进行访问:
#openssls_client-connectIP:port-CAfile/path/to/CA_certificate_file17、服务器status页面
status页面是httpd内生的,且此信息可以通过web予以显示,此信息是关于服务器的运行状态的所以不能对所有人都显示。
[root@localhosthtml]#vim/etc/httpd/conf/httpd.confSetHandlerserver-statusAuthTypeBasicAuthName"ServerStatus"AuthUserFile"/etc/httpd/conf/.htpasswd"Requirevalid-userOrderdeny,allowAllowfromall
SetHandler: 显式的定义使用的处理器 ,是当文件被调用时,Apache内部表示形式;一般每种文件类型都有其隐式处理器;
18、使用mod_deflate模块压缩页面优化传输速度一般当CPU多空闲,带宽压力大时才会启用压缩,启用压缩不但能优化传输速度也能节约带宽,但是其一个弊端就是会使缓存的命中率下降。
[root@localhosthtml]#vim/etc/httpd/conf/httpd.confSetOutputFilterDEFLATE#启用deflate[root@localhostconf.d]#vimdeflate.conf#RestrictcompressiontotheseMIMEtypes定义要压缩的文件类型AddOutputFilterByTypeDEFLATEtext/plainAddOutputFilterByTypeDEFLATEtext/htmlAddOutputFilterByTypeDEFLATEapplication/xhtml+xmlAddOutputFilterByTypeDEFLATEtext/xmlAddOutputFilterByTypeDEFLATEapplication/xmlAddOutputFilterByTypeDEFLATEapplication/x-javascriptAddOutputFilterByTypeDEFLATEtext/javascriptAddOutputFilterByTypeDEFLATEtext/css#Levelofcompression(Highest9-Lowest1)DeflateCompressionLevel9#压缩比,默认为6#Netscape4.xhassomeproblems.BrowserMatch^Mozilla/4gzip-only-text/html#Netscape4.06-4.08havesomemoreproblemsBrowserMatch^Mozilla/4\.0[678]no-gzip#MSIEmasqueradesasNetscape,butitisfineBrowserMatch\bMSI[E]!no-gzip!gzip-only-text/html19、资源限定
软限制:可以超出的限制,但仅超出一定时长;
硬限制:绝对不能超出的限制
使用 ulimit 可以修改软限制:
-n [N]: 显示或限定能打开的最大的文件句柄数;
-u [N]: 所能够运行的最多进程数;
其相对应的配置文件为:/etc/security/limits.conf,扩展配置:/etc/security/limits.d/*.conf
root@tianfeiyu#vim/etc/security/limits.conf#设定硬限制apachehardnofile65535#设定能打开的最大文件数apachehardnproc30000#设定能打开的最大进程数20、httpd程序包自带的工具介绍
httpd:Apache 服务器。
apachectl:ApacheHTTP服务器控制工具。ab:ApacheHTTP服务器性能基准工具。apxs:Apache扩展工具。configure:配置源代码。dbmmanage:为基本认证创建和更新DBM格式的用户认证文件。htcacheclean:清理磁盘缓存。htdigest:为摘要认证创建和更新用户认证文件。htdbm:操作DBM密码数据库。htpasswd:为基本认证创建和更新用户认证文件。httxt2dbm:为RewriteMap创建dbm文件。logresolve:将Apache日志文件中的IP地址解析到主机名称。rotatelogs:不关闭Apache而切换日志文件。suexec:执行外部程序前切换用户。运行目录:/etc/httpd配置文件:主配置:/etc/httpd/conf/httpd.conf扩展配置:/etc/httpd/conf.d/*.confSocket:80/tcp,443/tcp文档根目录:/var/www/htmlCGI目录:/var/www/cgi-bin/MPM(MultipathProcessingModule):多道处理模块,非一个模块,而是对一种特性的称谓多进程模型prefork:一个进程响应一个请求(主进程创建进程响应)多线程模型worker:一个主进程多个子进程,一个进程生成多个线程,一个线程响应一个请求,一个进程生成的线程数有限事件模型event:一个线程响应多个请求,基于事件驱动机制来维持多个用户请求;event-driven:事件驱动,主要目的在于实现单线程响应多个请求;httpd配置目录信息:服务脚本:/etc/rc.d/init.d/httpd脚本配置文件:/etc/sysconfig/httpd高度模块化:DSO(DynamicSharedObject)动态化装饰模块MPM(MultipathProcessingModule):多道处理模块,非一个模块,而是对一种特性的称谓
感谢各位的阅读!关于“Apache中如何配置httpd-2.2”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。