目錄:
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.www58058.com/84182