目录:
1、修改监听的IP和PORT:
Listen [IP-address:]portnumber [protocol](1) 省略IP表示为0.0.0.0;(2) Listen指令可重复出现多次;Listen 80Listen 8080(3) 修改监听socket,重启服务进程方可生效;(4) 限制其必须通过ssl通信时,protocol需要定义为https;
2、持久连接(保持连接,长连接):
Persistent Connection:tcp连续建立后,每个资源获取完成后不全断开连接,而是继续等待其它资源请求的进行;如何断开?·数量限制·时间限制
副作用:对并发访问量较大的服务器,长连接机制会使得后续某些请求无法得到正常 响应;折衷:使用较短的持久连接时长,以及较少的请求数量;KeepAlive On|OffKeepAliveTimeout 15MaxKeepAliveRequests 100
注意:httpd-2.4的KeepAliveTimeout可是毫秒级;
KeepAliveTimeout num[ms]
3、MPM:
httpd2.2版本·查看静态编译的模块:# httpd -l·查看静态编译及动态编译的模块:# httpd -M·查看是否有其他MPM模块# httpd.worker -l# httpd.event -l修改MPM模块类型vim /etc/sysconfig/httpdHTTPD=/usr/sbin/httpd.{worker,event}httpd2.4版本
修改MPM模块类型
vim /etc/httpd/conf.modules.d/00-mpm.conf
注意:重启服务进程方可生效修改MPM属性:vim /etc/httpd/conf/httpd.confprefork的配置<IfModule prefork.c>StartServers 8MinSpareServers 5MaxSpareServers 20ServerLimit 256MaxClients 256MaxRequestsPerChild 4000</IfModule>worker的配置:<IfModule worker.c>StartServers 4MaxClients 300MinSpareThreads 25MaxSpareThreads 75ThreadsPerChild 25MaxRequestsPerChild 0</IfModule>
4、DSO:
配置指定实现模块加载httpd2.2,编辑vim /etc/httpd/conf/httpd.confLoadModule <mod_name> <mod_path>httpd2.4,编辑vim /etc/httpd/conf.modules.d/00-base.confLoadModule <mod_name> <mod_path>模块文件路径可使用相对路径:相对于ServerRoot(默认/etc/httpd)
5、定义’Main’ server的文档页面路径:
ServerName语法格式: ServerName [scheme://]fully-qualified-domain-name[:port]DocumentRoot “”
6、站点访问控制常见机制:
httpd-2.2:order和allow、denyorder:定义生效次序;写在后面的表示默认法则;Allow from, Deny from来源地址:IPNetAddr:172.16172.16.0.0172.16.0.0/16172.16.0.0/255.255.0.0
httpd-2.4:
基于IP控制:<RequireAll>Require ip IP地址或网络地址Require not ip IP地址或网络地址</RequireAll>基于主机名控制:Require host 主机名或域名Require not host 主机名或域名
要放置于<RequireAll>配置块中或<RequireAny>配置块中;Options:后跟1个或多个以空白字符分隔的“选项”列表;Indexes:指明的URL路径下不存在与定义的主页面资源相符的资源文件时,返回索引列表给用户;FollowSymLinks:允许跟踪符号链接文件所指向的源文件;None:All:All options except for MultiViews.
7、定义站点主页面:
DirectoryIndex index.html index.html.var
8、定义路径别名:
格式:Alias /URL/ “/PATH/TO/SOMEDIR/”示例:Alias /download/ “/rpms/pub/”http://www.magedu.com/download/bash-4.4.2-3.el6.x86_64.rpm/rpms/pub/bash-4.4.2-3.el6.x86_64.rpm
9、设定默认字符集:
AddDefaultCharset UTF-8中文字符集:GBK, GB2312, GB18030
10、日志设定:
日志类型:访问日志 和 错误日志错误日志:ErrorLog logs/error_logLogLevel warn#日志等级:Possible values include: debug, info, notice, warn, error, crit, alert, emerg.访问日志:LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” combinedCustomLog logs/access_log combinedLogFormat format strings:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats%h:客户端IP地址;%l:Remote User, 通常为一个减号(“-”);%u:Remote user (from auth; may be bogus if return status (%s) is 401);非为登录访问时,其为一个减号;%t:服务器收到请求时的时间;%r:First line of request,即表示请求报文的首行;记录了此次请求的“方法”,“URL”以及协议版本;%>s:响应状态码;%b:响应报文的大小,单位是字节;不包括响应报文的http首部;%{Referer}i:请求报文中首部“referer”的值;即从哪个页面中的超链接跳转至当前页面的;%{User-Agent}i:请求报文中首部“User-Agent”的值;即发出请求的应用程序;
11、基于用户的访问控制
认证质询:WWW-Authenticate:响应码为401,拒绝客户端请求,并说明要求客户端提供账号和密码;认证:Authorization:客户端用户填入账号和密码后再次发送请求报文;认证通过时,则服务器发送响应的资源;认证方式有两种:basic:明文digest:消息摘要认证安全域:需要用户认证后方能访问的路径;应该通过名称对其进行标识,以便于告知用户认证的原因;
basic认证配置示例:
(1) 定义安全域<Directory “”>Options NoneAllowOverride NoneAuthType Basic #开启认证AuthName “String“ #认证提示文字AuthUserFile “/PATH/TO/HTTPD_USER_PASSWD_FILE” #认证文件位置Require user username1 username2 …</Directory>允许账号文件中的所有用户登录访问:Require valid-user(2) 生成提供账号和密码存储(文本文件)使用专用命令完成此类文件的创建及用户管理
htpasswd [options] /PATH/TO/HTTPD_PASSWD_FILE username
-c:自动创建此处指定的文件,因此,仅应该在此文件不存在时使用;-m:md5格式加密-s: sha格式加密-D:删除指定用户-b:批模式添加用户htpasswd -m [options] /PATH/TO/HTTPD_PASSWD_FILE username password另外:基于组账号进行认证;(1) 定义安全域<Directory “”>Options NoneAllowOverride NoneAuthType BasicAuthName “String“AuthUserFile “/PATH/TO/HTTPD_USER_PASSWD_FILE”AuthGroupFile “/PATH/TO/HTTPD_GROUP_FILE” #定义组用户文件位置Require group grpname1 grpname2 …</Directory>(2) 创建用户账号和组账号文件;定义组用户文件vim /PATH/TO/HTTPD_GROUP_FILE组文件:每一行定义一个组GRP_NAME: username1 username2 …
12、虚拟主机
有三种实现方案:·基于ip:为每个虚拟主机准备至少一个ip地址;·基于port:为每个虚拟主机使用至少一个独立的port;·基于FQDN:为每个虚拟主机使用至少一个FQDN;虚拟主机的配置方法:<VirtualHost IP:PORT>ServerName FQDNDocumentRoot “”</VirtualHost>
基于IP的虚拟主机示例:
<VirtualHost 172.16.100.6:80>ServerName www.a.comDocumentRoot “/www/a.com/htdocs”</VirtualHost><VirtualHost 172.16.100.7:80>ServerName www.b.netDocumentRoot “/www/b.net/htdocs”</VirtualHost>基于端口的虚拟主机:<VirtualHost 172.16.100.6:80>ServerName www.a.comDocumentRoot “/www/a.com/htdocs”</VirtualHost><VirtualHost 172.16.100.6:808>ServerName www.b.netDocumentRoot “/www/b.net/htdocs”</VirtualHost><VirtualHost 172.16.100.6:8080>ServerName www.c.orgDocumentRoot “/www/c.org/htdocs”</VirtualHost>
基于FQDN的虚拟主机:
<VirtualHost 172.16.100.6:80>ServerName www.a.comDocumentRoot “/www/a.com/htdocs”</VirtualHost><VirtualHost 172.16.100.6:80>ServerName www.b.netDocumentRoot “/www/b.net/htdocs”</VirtualHost>注意:如果是httpd-2.2,则使用基于FQDN的虚拟主机时,需要事先使用如下指令:NameVirtualHost IP:PORT
13、status页面:
需要加上以下这一条LoadModule status_module modules/mod_status.sohttpd-2.2<Location /server-status>SetHandler server-statusOrder allow,denyAllow from 172.16</Location>httpd-2.4<Location /server-status>SetHandler server-status<RequireAll>Require ip 172.16</RequireAll></Location>
14、curl,ab命令
curl:-A/–user-agent <string> #设置用户代理发送给服务器–basic 3使用HTTP基本认证–tcp-nodelay #使用TCP_NODELAY选项-e/–referer <URL> #来源网址–cacert <file> #CA证书 (SSL)–compressed #要求返回是压缩的格式-H/–header<line> #自定义首部信息传递给服务器-I/–head #只显示响应报文首部信息–limit-rate <rate> #设置传输速度-u/–user <user[:password]>#设置服务器的用户和密码-0/–http1.0 #使用HTTP 1.0ab:-n:总请求数;-c:模拟的并行数;-k:以持久连接模式 测试;
15、使用mod_deflate模块压缩页面优化传输速度
编辑vim /etc/http/conf.d/名字.conf,加入以下代码:# 加入压缩模块SetOutputFilter DEFLATE# 限制对这些MIME类型的压缩AddOutputFilterByType DEFLATE text/plainAddOutputFilterByType DEFLATE text/htmlAddOutputFilterByType DEFLATE application/xhtml+xmlAddOutputFilterByType DEFLATE text/xmlAddOutputFilterByType DEFLATE application/xmlAddOutputFilterByType DEFLATE application/x-javascriptAddOutputFilterByType DEFLATE text/javascriptAddOutputFilterByType DEFLATE text/css# 设置压缩等级DeflateCompressionLevel 9
httpd反代proxy_fcgi:
示例:
<VirtualHost *:80>ServerName www.b.netDocumentRoot /apps/vhosts/b.netDirectoryIndex index.phpProxyRequests OffProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/apps/vhosts/b.net/$1<Directory “/apps/vhosts/b.net”>Options NoneAllowOverride NoneRequire all granted</Directory></VirtualHost>
原创文章,作者:z long,如若转载,请注明出处:http://www.178linux.com/84182