- Centos7系統下實現httpd-2.2的安裝,并分別實現prefork、worker、event等幾種工作方式
- CentOS7安裝開發環境
yum –y install “Development Tools”
- 下載源碼的httpd-2.2.8
- 編譯安裝httpd-2.2.8
- 切換到httpd-2.2.8目錄
- ./configure –prefix=/usr/local/httpd
- Make
- Make install
- 創建啟動文件
- 在/etc/rc.d/init.d/
- ln /usr/local/httpd/bin/apachectl httpd
- vi httpd ## 添加#chkconfig: 345 90 10
- chkconfig –add httpd
- 用systemctl start httpd.service測試
- 添加命令到環境變量
PATH=$PATH:/usr/local/httpd/bin
Prefork模型的httpd安裝成功
- 分別編譯安裝其他模型的httpd
./configure ?–prefix=/usr/local/httpd.work? –with-mpm=worker
./configure ?–prefix=/usr/local/httpd.event? –with-mpm=event
然后用不同的啟動命令啟動httpd
- 簡述request報文請求方法和狀態響應碼
method(方法):
GET:從服務器獲取一個資源;
HEAD:只從服務器獲取文檔的響應首部;
POST:向服務器發送要處理的數據;
PUT:將請求的主題部分存儲在服務器上;
DELETE:請求刪除服務器上指定的資源;
TRACE:追蹤請求到達服務器中間經過的代理服務器;
OPTIONS:請求服務器返回對指定資源支持使用的請求方法;
協議查看或分析的工具:
tcpdump,tshark,wireshark
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
- 詳細描述httpd虛擬主機、站點訪問控制、基于用戶的訪問控制、持久鏈接等應用配置實例
- Httpd虛擬主機
虛擬主機
站點標識:socket
IP相同,但端口不同
IP不同,但端口均為默認端口;
FQDN不同;
請求報文中首部
Host:www.mageedu.com
報文首部
方法 ?URL HTTP版本
GET www.magedu.com httpd1.1
有三種實現方案:
基于ip:
為每個虛擬主機準備至少一個ip地址;
基于port:
為每個虛擬主機使用至少一個獨立的port;
基于FQND:
為每個虛擬主機使用至少一個FQDN;
注意(專用于httpd-2.2):一般虛擬機不要與中心主機混用;因此,要使用虛擬主機,得先禁用main主機;
禁用方法:注釋中心主機的DocumentRoot指令即可;
虛擬主機的配置方法:
<VirtualHost IP:PORT>
ServerName FQDN
DocumentRoot “”
</VirtualHost>
其他可用指令:
ServerAlias:虛擬主機的別名;可多次使用;
ErrorLog:
CustomLog:
<Directory>
…
</Directory
Alias
….
<VirtualHost 172.16.0.67:80>
ServerName www.magedu.com
DocumentRoot “/data/web/magedu”
<Directory “/data/web/magedu”>
Oprions None
AllowOverride None
Require all granted
</Directory>
CustomLog “logs/magedu_access” combined
</VirtualHost>
基于IP的虛擬主機示例:
<VirtualHost 172.16.0.67:80>
ServerName www.magedu.com
DocumentRoot “/data/web/magedu”
</VirtualHost>
<VirtualHost 172.16.0.68:80>
ServerName www.niaogedu.com
DocumentRoot “/data/web/niaoge”
</VirtualHost>
基于端口的虛擬主機:
<VirtualHost 172.16.0.67:80>
ServerName www.magedu.com
DocumentRoot “/data/web/magedu”
</VirtualHost>
<VirtualHost 172.16.0.68:8080>
ServerName www.niaogedu.com
DocumentRoot “/data/web/niaoge”
</VirtualHost>
基于FQDN的虛擬主機
<VirtualHost 172.16.0.68:80>
ServerName www.niaogedu.com
DocumentRoot “/www/niaogedu/htdocs”
</VirtualHost>
<VirtualHost 172.16.0.68:80>
ServerName www.magedu.com
DocumentRoot “/www/magedu/htdocs”
</VirtualHost>
注意:如果時httpd-2.2,則使用基于FQDN的虛擬主機時,需要事先使用如下指令:
NameVirtualHost IP:PORT
- 站點訪問控制,基于用戶的訪問控制
基于IP的訪問控制
允許所有主機訪問:Require all granted
拒絕所有主機訪問:Require all deny
控制特定的IP訪問
Require ip ipaddr? 授權指定來源的IP訪問;
Require not ip ipaddr? 拒絕;
控制特定的主機訪問
Require host HOSTNAME 授權指定來源的主機訪問;
REquire not host HOSTNAME 拒絕;
HOSTNAME:
FQDN:特定主機
domin.tld:指定與名下的所有主機
<RequireAll>
Require all granted
Require not ip 172.20
</Require>
基于用戶認證方式有兩種:
basic:明文
digest:消息摘要認證
安全域:要求用戶認證后方能訪問的路徑;應該通過名稱對其進行標識,以便于告知用戶認證的原因;
用戶的賬號和密碼存放于何處?
虛擬賬號:僅用于訪問某服務時用到的認證標識
存儲:
文本文件;
SQL數據庫;
ldap目錄存儲;
basic認證配置示例:
(1)定義安全域
<Directory “路徑”>
OPtions None
AllowOverride None
AuthType Basic
AuthName “String” ##String 認證提示信息….
AuthUserFile “/PATH/TO/HTTPD_user_PASSWD_FILE”
Require user username1 username2 ….
</Directory>
2)提供賬號和密碼存儲(文本文件)
使用專用命令完成此類文件的創建及用戶管理
htpasswd [options] /PATH/TO/HTTPD_PASSWD_FILE username
-c:自動創建此處指定的文件,因此,僅應該在此文件不存在時使用;
-m:md5格式加密
-s:sha格式加密
-D:刪除指定用戶
另外:基于組賬號進行認證;
a.定義安全域
<Directory “”>
OPtions None
AllowOverride None
AuthType Basic
AuthName “Admin Area, Plz enter username and password.”
AuthUserFile “/PATH/TO/HTTPD_user_PASSWD_FILE”
Require group groupname1 groupname2 ….
</Directory>
b.創建用戶賬號和組賬號文件;
組文件:每一行定義一個組
GRP_NAME:username1 username2
- 持久連接
持久連接(保持連接,長連接)
persistent connection:tcp連續建立后,每個資源獲取完成后不全斷開連接,而是繼續等待其他資源請求的進行;
如果斷開?
數量限制
時間限制
副作用:對并發訪問較大的服務器,長連接機制會使得后續某些請求無法得到正常響應;
折中:使用較短的持久連接時長,以及較少的請求數量;
配置如下
KeepAlive On|Off
KeepAliveTimeOut 15
MaxKeepAliveRequests 100
測試:
telnet WEB_SERVER_IP PORT
GET /URL HTTP/1.1
Host:SERVER_IP
注意:
httpd-2.4的KeepAliveTimeout可是毫秒級;
KeepAliveTimeout num[ms]
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/102919