一、CentOS 6中httpd相關介紹
系統所帶rpm包爲:httpd-2.2.15-39.el6.centos.x86_64
配置文件
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
[root@localhost ~]# grep "Section" /etc/httpd/conf/httpd.conf
### Section 1: Global Environment //全局環境設置
### Section 2: 'Main' server configuration //中心服務器配置
### Section 3: Virtual Hosts //虛擬主機相關配置
服務腳本:
/etc/rc.d/init.d/httpd
腳本的配置文件 : /etc/sysconfig/httpd
主程序文件: /usr/sbin/httpd.* 默認使用prefork ,可以在服務腳本的配置文件中切換使用
日誌文件目錄: /var/log/httpd
access_log : 訪問日誌
error_log : 錯誤日誌,記錄web服務器啓動停止,運行過程中的錯誤信息
站點文檔目錄: /var/www/html
二、httpd配置文件的相關配置介紹
2.1、修改監聽的服務端口 | Listen [ip:]PORT |
2.2、持久連接(長連接) | 連接建立,每個資源獲取完成後不會斷開連接,而是繼續等待其他的請求完成 如何斷開持久連接?可以通過數量限制和時間限制來實現 KeepAlive on | off MaxKeepAliveRequests : 持久連接時最大請求資源數 KeepAliveTimeout :持久連接的時間限制 |
2.3、MPM-多路處理模塊 | httpd-2.2 不支持同時編譯多個模塊,只能在編譯時選定一個,rpm安裝的包提供三個二進制程序文件,分別用於實現對不同MPM機制的支持,確認方法:ps aux | grep httpd /usr/sbin/httpd #prefork模型(默認模型) /usr/sbin/httpd.event #event事件驅動模型 /usr/sbin/httpd.worker #worker模型 |
2.4、DSO(動態共享對象) | 配置指令實現模塊加載 LoadModule <mod_name> <mod_path> 模塊路徑可使用相對地址 相對於ServerRoot(/etc/httpd)指向的路徑 |
2.5、DocumentRoot (在主服務器段設置) | DocumentRoot指向的路徑爲URL路徑的起始位置 |
2.6、站點訪問控制 | 文件系統路徑:站點目錄及其子目錄 <Directory " "> </Directory> URL路徑:網頁 <Location " "> </Location> 訪問控制機制: 基於來源地址--見2.7 基於賬號--見2.8 |
2.7、基於來源地址的訪問控制 | (1)Options對於此目錄資源的訪問屬性方式 Indexes : 索引 FollowSymLinks : 跟蹤符號連接指定的文件,無論這個文件在什麼地方都運行訪問其原文件 None : 不支持任何選項 (安全做法) (2)Order :檢查次序 Order allow,deny(默認機制) 白名單 Order deny,allow(默認機制) 黑名單 Allow from Deny from |
2.8、基於賬號 | 認證質詢: WWW-Authenticate:響應碼爲401,拒絕客戶端請求,並說明要求客戶提供賬號和密碼 認證:Authorization:客戶端用戶填入賬號和密碼後再次發送請求報文,認證通過,服務器發送響應的資源 認證類型: basic:明文 digest:消息摘要;經過md5加密 |
2.9、basic認證定義格式 | (1)基於用戶 <Directory " PATH"> Options None AllowOverride None AuthType Basic AuthName "隨便字符串" # 告訴用戶爲什麼要彈出對話框 AuthUserFile "/PATH/TO/HTTPD_USER_PASSWD_FILE" Require user username1 username2 </Directory> <Location "" > ......... </Location> 允許賬號文件中的所有用戶登錄訪問:Require valid-user (2)基於組 <Directory " PATH"> Options None AllowOverride None AuthType Basic AuthName "隨便字符串" # 告訴用戶爲什麼要彈出對話框 AuthUserFile "/PATH/TO/HTTPD_USER_PASSWD_FILE" AuthGroupFile "/PATH/TO/HTTPD_GROUP_PASSWD_FILE" Require group group1 group2 </Directory> <Location "" > ......... </Location> (3)添加用戶的方法-htpasswd命令 第一次創建的時候用-c ; # htpasswd -c -m /etc/httpd/conf.d/.htpasswd user1 加第2個的時候要給-c選項去掉 # htpasswd -m /etc/httpd/conf.d/.htpasswd user2 -D 刪除用戶的 -m:md5加密的用戶密碼 -s:sha1加密用戶密碼 |
2.10、定義默認主頁面 | DirectoryIndex index.html index.html.var 爲空,將會給所有頁面都顯示 |
2.11、httpd日誌設定 | 錯誤日誌 ErrorLog logs/error_log LogLevel 日誌級別: debug, info, notice, warn, error, crit, alert, emerg.
訪問日誌 CustomLog logs/access_log combined LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 組合格式 %h 遠程主機,客戶端的ip地址 %l 遠程登錄的用戶名,不是表單登錄,而是使用mod_identity模塊登錄使用的 %u 認證時候輸入的用戶名 %t 服務器收到請求的時間 %r:請求報文的首行信息 (method url version) %>s: 響應狀態碼 %b:響應報文的大小 單位爲字節,不包含響應報文首部 %{Referer}i:請求報文referer首部的值 ;referer:到達當前頁面的訪問入口,即從哪兒個頁面的超鏈接跳轉 %{User-Agent}i:請求報文當中“User-Agent”首部的值;及發出請求用到的應用程序;用戶代理(瀏覽器類型) |
2.12、設定默認字符集 | AddDefaultCharset UTF-8 | GBK | GB2312 | GB18030 |
2.13、虛擬主機設定方法 | 虛擬主機的3種類型: 1、基於ip : 爲每個虛擬主機準備至少一個ip地址 2、 基於port : Listen 8080 爲每個虛擬主機裝備至少一個專用端口,實踐中很少使用 3、基於hostname ; NameVirtualHost 對應ip地址:端口 爲每個虛擬主機準備至少一個專用hostname 可混合使用上述三種方式任意方式 注意:一般虛擬主機莫與中心主機混用,所以要使用虛擬主機,先禁用中心主機 每個虛擬主機都有專用配置: < VirtualHost "IP:PORT" > ServerName DocumentRoot "" ServerAlias : 虛擬主機的別名 ErrorLog CustomLog <Directory ""> 可設置訪問控制 </Directory> </VirtualHost > |
2.14、內置的status頁面 | server-status定義 #ExtendedStatus On <Location /server-status> SetHandler server-status </Location> |
2.15、httpd常用的status | 1xx:100-101, 信息提示; 2xx:200-206, 成功 3xx:300-305, 重定向 4xx:400-415, 錯誤類信息,客戶端錯誤 5xx:500-505, 錯誤類信息,服務器端錯誤 常用的狀態碼: 200: 成功,請求的所有數據通過響應報文的entity-body部分發送;OK 301: 請求的URL指向的資源已經被刪除;但在響應報文中通過首部Location指明瞭資源現在所處的新位置;Moved Permanently 永久重定向 302: 與301相似,但在響應報文中通過Location指明資源現在所處臨時新位置; Found 304: 客戶端發出了條件式請求,但服務器上的資源未曾發生改變,則通過響應此響應狀態碼通知客戶端;Not Modified 401: 需要輸入賬號和密碼認證方能訪問資源;Unauthorized 403: 請求被禁止;Forbidden 404: 服務器無法找到客戶端請求的資源;Not Found 500: 服務器內部錯誤;Internal Server Error 502: 代理服務器從後端服務器收到了一條僞響應;Bad Gateway (網關配置錯誤) |
三、https
tcp 443
配置httpd支持https的方法:
(1) 爲服務器申請數字證書;
測試:通過私建CA發證書
(a) 創建私有CA
(b) 在服務器創建證書籤署請求
(c) CA簽證
(2) 配置httpd支持使用ssl,及使用的證書;
# yum -y install mod_ssl
# httpd -M | grep ssl
配置文件:/etc/httpd/conf.d/ssl.conf
DocumentRoot #URL起始位置,及虛擬主機的網站目錄
ServerName # 主機名
SSLCertificateFile # 證書文件
SSLCertificateKeyFile # 證書文件所對應的私鑰文件
(3) 測試基於https訪問相應的主機;
# openssl s_client [-connect host:port] -CApath [-CAfile filename]