apache 2.2 配置

1.HTTP狀態碼:

  1xx: 信息性狀態碼
2xx:成功狀態碼 200OK 201CREATED
3xx:301 永久重定向 302 臨時重定向,會在響應報文中使用location:新位置
4xx:客戶端類錯誤
     403 請求被拒絕
     404 頁面不存在
     405 使用的方法不被允許
5xx:服務器類錯誤
     500:服務器類錯誤
     502:服務器網管錯誤
     503:服務暫時不可用


2.HTTP MPM三種模式

prefork 中沒有線程的概念,是多進程模型,一個進程處理一個連接;穩定;響應快。其缺點是在連接數比較大時就非常消耗內存。

worker 是多進程多線程模型,一個進程有多個線程,每個線程處理一個連接。與prefork相比,worker模式更節省系統的內存資源。不過,需要注意worker模式下的Apache與php等程序模塊的兼容性。

event 是worker模式的變種,它把服務進程從連接中分離出來,在開啓KeepAlive場合下相對worker模式能夠承受的了更高的併發負載。event模式不能很好的支持https的訪問(HTTP認證相關的問題)


3.HTTPD基礎配置文件:

# grep "Section"/etc/httpd/conf/httpd.conf
全局配置段
### Section 1: Global Environment
主服務器的配置段
### Section 2: 'Main' server configuration
虛擬主機配置段,通常不會和主服務器一起使用
### Section 3: Virtual Hosts

持久連接
KeepAliveOff:使用持久連接{On|Off}
MaxKeepAliveRequests100:使用持久連接最大的連接數
KeepAliveTimeout15:使用持久連接的超時時間
 
MPM模塊
<IfModule prefork.c> 
StartServers      8 #啓動8個空閒進程
MinSpareServers   5 #最少空閒進程5個
MaxSpareServers  20 #最大空閒進程20個,不能小於空閒進程
ServerLimit     256 #對於MaxClient 最大啓動的server
MaxClients      256 #同時允許處理多少個客戶請求256
MaxRequestsPerChild 4000 #每個子進程最多允許處理4000個請求
</IfModule>
 
<IfModule worker.c>
StartServers        4 #啓用多少個進程
MaxClients        300 #最大併發的請求
MinSpareThreads    25 #最小空閒進程25個
MaxSpareThreads    75 #最多空閒進程75個
ThreadsPerChild    25 #每個進程最多25個線程
MaxRequestsPerChild 0 #不限定每個線程處理多少個請求
</IfModule>
 
監聽端口
Listen80
 
指定要裝載的模塊:DSO
LoadModuleauth_basic_module modules/mod_auth_basic.so
……
#httpd -D DUMP_MODULES :  查看裝載了哪些模塊
 
2.)主服務器的配置段
### Section 2: 'Main' server configuration
 
ServerAdmin root@localhost : 
 
主機名
ServerNamewww.explm.com:80
 
網站根目錄
DocumentRoot“/var/www/html”
 
於Directory中可做的訪問控制
OptionsIndexes FollowSymLinks
 
如果目錄下面沒有主頁,會把目錄下的所有文件以列表方式列出,並可以i提供下載
-Indexes
跟蹤符號連接
 -FollowSymLinks
 
支持在每個頁面下創建.htacces用戶實現對比此目錄中資源訪問時的訪問控制功能
AllowOverrideNone
 
日誌功能:
ErrorLog"/path/to/error_log"
LogLevel{debug|info|notice|warn|error|crit|alert|emerg}
LogFormat
CustomLog"/path/to/access_log" LogFormat_Name
CustomLoglogs/access_log combined
%h:客戶端地址
%l:遠程登錄名,通常爲-
%u:認證時輸入用戶名,沒有認證時爲-
%t:服務器收到 用戶請求時的時間
%r:請求報名的起始行
%>s:響應狀態碼
%b:響應報文的長度,單位是字節
%{HEADER_NAME}i:記錄指定首部對應的值


4.CGI腳本:

CGI腳本路徑別名,默認在/var/www/cgi-bin/
CGI如何工作:使服務器提供動態頁面,用戶的請求先到達系統內核的工作區,由內核交由本地監聽在WEB服務上的服務程序,WEB服務器的服務理解用戶請求的是一種特殊腳本的請求,WEB服務器服務不會直接相應客戶。而是通過用戶請求的資源響應給CGI協議,交給CGI的程序解釋器,解釋器會到磁盤上載入所請求的腳本後,在本地執行。並且將直接結果返回給WEB服務器。

ScriptAlias/cgi-bin/ "/var/www/cgi-bin/" :通知WEB服務器/var/www/cgi-bin/目錄下可以存放CGI腳本
var/www/cgi-bin
#!/bin/bash
cat << EOF
Content-Type: text/html
 
<pre>
<meta http-equiv="refresh"content="3";url="172.16.32.10/cgi-bin/test.sh" /> #動態刷新頁面,3秒刷新一次
<h1> The host time is: $(date +%T)</h1>
<h2>The system load is: $(sar 1 1)</h1>
</pre>
 
EOF

# chmod +x test.sh

wKiom1Pspeqj3kCjAAGq6auwctY499.jpg

5.基於用戶做訪問控制:

如果想要給虛擬主機做訪問控制,只需要寫入要控制的路徑就好
用戶認證:基本認證,明文發送 Basic
                  摘要認證,加密後發送的 digest
使用虛擬用戶,不是用戶登錄系統的帳號,僅用戶訪問某服務,或者獲取某資源的認證
可以存放的位置:文本文件(密碼是MD5).httppasswd,數據庫,(dbm基於文本文件的數據庫引擎,比文本的速遞要快,API方式輸出),ldap,輕量級訪問協議
authenticationprovider: 帳號和密碼的存儲機制,簡稱authn
authorizationprovider:用戶訪問的路徑
httpd中簡稱:authn

基於文件做訪問控制:
<Directory "/var/www/cgi-bin">
    Optionsnone #用戶訪問時無任何選項
   AllowOverride AuthConfig #做認證相關的配置
    AuthTypeBasic #指明認證類型
    AuthName"system dmz!" #提示信息
#   AuthBasicProvider file
   AuthUserFile "/etc/httpd/conf/.htpasswd" #指定認證文件存放位置
#    Requireadmin
    Requirevalid-user #允許哪些用戶登錄 valid-user:所有合法的帳號 
</Directory>

創建htpasswd認證文件

Htpasswd命令:
選項: -c:  如果事先不存在,則創建,只能在第一次文件本月的時候使用
            -m:使用md5方式存儲密碼

            # htpasswd -c -m /etc/httpd/conf/.htpasswd admin
New password: 
Re-type new password: 
Adding password for user admin

# cat /etc/httpd/conf/.htpasswd 
admin:$apr1$BdPIYoGU$rklSzXdEDz3JVFKpawJ8G1

測試下:

wKiom1PspnyT18GeAAEygoMzBmo789.jpg

輸入正確的密碼後,就可以登錄了


6.虛擬主機:

#DocumentRoot "/var/www/html"
<VirtualHost 172.16.32.10:80>
   ServerName www.zhang.com
   DocumentRoot "/var/www/web1"
</VirtualHost>


7.httpd內嵌處理器handler,輸出status狀態信息:

用到的hendler:server-status
啓用handler使用SetHandler指令
handler:當文件被調圖時,在apache內部的表示形式,一般文件類型都是隱式處理器
 
# vim /etc/httpd/conf/httpd.conf
<Location /server-status>
   SetHandler server-status
#    Orderdeny,allow
    Orderallow,deny
#    Denyfrom all
#    Allowfrom .example.com
    Allowfrom 172.16.0.0/16
</Location>
 
# httpd -t
Syntax OK
# service httpd reload
Reloading httpd:

wKiom1Psp1Gxgl9lAAPTQca5mp0619.jpg


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章