一、何為http
什么是http?http是Hyper Text Mark Language的縮寫,超文本標記語言。Apache下的httpd是實現了這一功能的開源軟件。
二、http特性
http特性1:持久連接及MPM參數設置
KeepAlive {On|Off} #是否啟動持久連接 MaxKeepAliveRequests 100 #最大持久連接數量 KeepAliveTimeout 15 #持久連接超時時長 http特性2:MPM參數控制 <IfModule prefork.c> #prefork工作模式下的mpm設定 StartServers 8 #開始啟動的進程數(主進程除外) MinSpareServers 5 #最下空閑進程數 MaxSpareServers 20 #最大空閑進程數 ServerLimit 256 #進程數限制 MaxClients 256 #客戶端最大進程數限制 MaxRequestsPerChild 4000 #單個進程最大請求數限制 </IfModule> <IfModule worker.c> #worker工作模式下的mpm設定 StartServers 4 #開始啟動的進程數(包括主進程) MaxClients 300 #最大客戶端連接數 MinSpareThreads 25 #最小空閑線程數 MaxSpareThreads 75 #最大空閑線程數 ThreadsPerChild 25 #進程啟動時生成線程數 MaxRequestsPerChild 0 #每個進程最大建立的線程數,0表示無限制 </IfModule>
[root@vm ~]# lsof -i:80 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME httpd 2465 root 4u IPv6 15075 0t0 TCP *:http (LISTEN) #主進程 httpd 2467 apache 4u IPv6 15075 0t0 TCP *:http (LISTEN) #以下為prefork模型中的8個子進程 httpd 2468 apache 4u IPv6 15075 0t0 TCP *:http (LISTEN) httpd 2469 apache 4u IPv6 15075 0t0 TCP *:http (LISTEN) httpd 2470 apache 4u IPv6 15075 0t0 TCP *:http (LISTEN) httpd 2471 apache 4u IPv6 15075 0t0 TCP *:http (LISTEN) httpd 2472 apache 4u IPv6 15075 0t0 TCP *:http (LISTEN) httpd 2473 apache 4u IPv6 15075 0t0 TCP *:http (LISTEN) httpd 2474 apache 4u IPv6 15075 0t0 TCP *:http (LISTEN) [root@vm ~]# lsof -i:80 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME httpd.wor 2513 root 4u IPv6 15903 0t0 TCP *:http (LISTEN) #以下為worker模型中啟動的初始進程數 httpd.wor 2514 apache 4u IPv6 15903 0t0 TCP *:http (LISTEN) httpd.wor 2516 apache 4u IPv6 15903 0t0 TCP *:http (LISTEN) httpd.wor 2517 apache 4u IPv6 15903 0t0 TCP *:http (LISTEN)
http特性3:訪問控制
基于本地文件系統路徑
<Directory "/path/to/somewhere"> </Directory> 基于url訪問路徑 <Location "/path/to/URL"> </Location>
基于用戶訪問控制
(1) 基于用戶進行認證
<Directory "/var/www/html/admin"> Options none AllowOverride AuthConfig AuthType Basic #認證類型 AuthName "Admin Area." #在表單中提示的字符 #AuthBasicProvider file AuthUserFile /etc/httpd/conf/.htpasswd #認證文件存放處 Require valid-user #允許訪問的用戶 </Directory> Require valid-user: 文件中所有用戶均可訪問 Require user USERNAME, ...
(2) 提供認證文件
htpasswd -c: 如果此文件事先不存在,則創建;注意,只能在創建第一個用戶時使用; -m:以md5的格式編碼存儲用戶的密碼信息 -D:刪除指定用戶 (3) 組認證 <Directory "/var/www/html/admin"> Options none AllowOverride AuthConfig AuthType Basic AuthName "Admin Area." #AuthBasicProvider file AuthUserFile /etc/httpd/conf/.htpasswd AuthGroupFile /etc/httpd/conf/.htgroup #認證組的文件存放處 Require group GROUP_NAME </Directory> 其中.htgroup文件的格式如下 組名:user1 user2 user3
http特性4:Directory中可用訪問控制
(1) Options (如何值取反,可使用-號)
Indexes: 當訪問的路徑下無默認的主頁面,將所有資源以列表形式呈現給用戶;危險,慎用;
FollowSymlinks: 跳躍符號鏈接
(2) AllowOverride
支持在每個頁面目錄下創建.htaccess用于實現對此目錄中資源訪問時的訪問控制功能。
http特性5:基于IP做訪問控制
(httpd-2.2以下版本)
Order allow,deny #除了allow IP or NET之外都是deny Deny from 172.16.100.17 Allow from 172.16.0.0/16 from后面能接受的地址格式: IP, Network Address 網絡地址格式較為靈活: 172.16 172.16.0.0 172.16.0.0/16 172.16.0.0/255.255.0.0
(httpd-2.4以上版本)
Require ip IPADDR Require not ip IPADDR IPADDR: 單個ip Network/Netmask: Network/Length: 172.16.0.0/16 Net: 172.16 Require host HOSTNAME Require not host HOSTNAME HOSTNAME: FQDN:具體的主機 DOMAIN: 域內的所有主機
http特性5:定義默認的主頁面
DirectoryIndex
Http特性6:配置日志功能
ErrorLog "/path/to/error_log" LogLevel {debug|info|notice|warn|error|crit|alert|emerg} LogFormat CustomLog "/path/to/access_log" LogFormat_Name %h: 客戶端地址 %l: 遠程登錄名,通常為- %u: 認證時輸入用戶名,沒有認證時為- %t: 服務器收到 用戶請求時的時間 %r:請求報名的起始行 %>s: 響應狀態碼 %b: 響應報文的長度,單位是字節
http特性7:路徑別名
Alias /url/ “/path/to/somewhere/” (url中是否有/號與后面的值結尾處一直)
http特性8:DSO機制裝載模塊
LoadModule Module_Name /path/to/Module_File (可使用相對路徑和絕對路徑)
http特性9:指定站點根目錄
DocumentRoot "/path/to/somewhere"
http特性10:設定默認字符集
AddDefaultCharset
http特性11:虛擬主機
注意:使用虛擬主機時需要取消主服務器的DocumentRoot設定
定義虛擬主機
NameVirtualHost IP:PORT <VirtualHost IP:PORT> </VirtualHost>
http特性12:https協議
https協議是加密的連接,具體使用要結合證書,可參考http的幫助文檔
http特性13: status頁面
httpd內嵌有handler,其中有一個handler用于輸出當前httpd服務相關狀態信息
handler: server-status
啟用handler要使用SetHandler指令
handler: 當文件被調用時,apache內部表示形式;一般每種文件類型都有其隱式處理器
http特性14:mod_deflate模塊壓縮
SetOutputFilter DEFLATE # mod_deflate configuration # Restrict compression to these MIME types AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE text/css # Level of compression (Highest 9 - Lowest 1) DeflateCompressionLevel 9 # Netscape 4.x has some problems. BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08 have some more problems BrowserMatch ^Mozilla/4\.0[678] no-gzip # MSIE masquerades as Netscape, but it is fine BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
三、基本工具介紹
httpd:
apache服務器程序
-t: 測試配置文件
-l: 列表靜態模塊
-D DUMP_MODULES:列出DSO模塊
-M:
-D DUMP_VHOSTS: 列出所有虛擬主機
htpasswd:
為基于文件的basic認證創建和更新用戶認證文件
apachectl:
腳本,httpd服務控制工具;
ab: apache benchmark
httpd的基準性能測試工具;
apxs:
httpd得以擴展使用第三方模塊的工具;
htcacheclean:
磁盤緩存清理工具;
htdigest:
為digest認證創建和更新用戶認證文件
httxt2dbm:
為rewrite map創建dbm格式的文件
rotatelogs:
不關閉httpd而切換其使用日志文件的工具
access_log, access_log.1, access_log.2,
suexec:
User apache
Group apache
當httpd進程需要以另外的用戶的身份去訪問某些資源時,可以以suexec作臨時切換;
ab工具的初步使用
使用ab工具時,請注意系統對于資源利用是有限定的,管理員可以使用ulimit命令臨時修改各種資源限制,當然不能超過系統的負載。其配置文件在/etc/security/limits.conf
/etc/security/limits.d/*.conf中
同類工具:http_load, webbench, seige
Usage: ab [options] [http[s]://]hostname[:port]/path
-c #: 模擬的并發數;
-n #: 總的請求數
-n的值一定要大于等于-c的值;
原創文章,作者:成吉思汗,如若轉載,請注明出處:http://www.www58058.com/8749