HTTP協議html
http/0.9:簡單超文本瀏覽,只支持get方式,內部文件檢索系統 linux
http/1.0 : cache ,MIME機制 method(請求方法),能夠傳輸非文本格式的數據。Html 格式的文本文檔有text/html類型標記,普通的ASCII文本文檔由text/plain,類型標記 Jpeg格式的圖片爲image/gif類型,Apple的quick time 電影格式爲video/quicktime類型。Method:請求方式 GET、POST、HEAD、PUT、DELDTE、TARCE、OPTIONS。 web
http/1.1:增長了緩存,持續鏈接的功能(keep-alive) apache
http/2.0:借鑑google SPDY協議的特性。瀏覽器
但目前來講http版本以1.1居多,2.0用的依然較少。緩存
HTTP事物
安全
request請求報文bash
<method> <request URL> <HTTP version> <header> <entity-body>
response迴應報文服務器
<HTTP version> <state code> <reason-phrase> <header> <entity-body>
http報文分析app
Request Method:GET#請求方式 Status Code:304 Not Modified#狀態碼 ##迴應報文## Connection:Keep-Alive#使用keep-alive長鏈接 Date:Tue, 13 Dec 2016 14:41:57 GMT#鏈接時間 ETag:"5-54361251beb00"#相應內容特徵碼 Keep-Alive:timeout=5, max=100#長鏈接的超時時間,最大鏈接保持時間 Server:Apache/2.4.6 (CentOS) PHP/5.4.16#服務器的系統和web服務器版本 ##請求報文## Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8#客戶端支持的數據類型 Accept-Encoding:gzip, deflate, sdch#支持的壓縮 Accept-Language:zh-CN,zh;q=0.8#支持的語言 Cache-Control:max-age=0#緩存控制 Connection:keep-alive#支持長鏈接 Host:www.linuxinfo.top#客戶端請求的域名 Upgrade-Insecure-Requests:1#表示支持不安全的http鏈接,但最好使用https User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, likeGecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0#客戶端使用的瀏覽器信息
使用httpd-2.4.23部署
Apache HTTP Server(簡稱Apache),是Apache軟件基金會的一個開放源代碼的網頁服務器,能夠在大多數電腦操做系統中運行,因爲其具備的跨平臺性和安全性,被普遍使用,是最流行的Web服務器端軟件之一。它快速、可靠而且可經過簡單的API擴展,Perl/Python解釋器可被編譯到服務器中,能夠建立一個天天有數百萬人訪問的Web服務器。
新版本的 httpd-2.4 新增如下特性;
新增模塊;
mod_proxy_fcgi(可提供 fcgi 代理)
mod_ratelimit(限制用戶帶寬)
mod_request(請求模塊,對請求作過濾)
mod_remoteip(匹配客戶端的 IP 地址)
對於基於 IP 的訪問控制作了修改,再也不支持 allow,deny,order 機制,而是統一使用 require 進行
還新增如下幾條新特性;
一、MPM 支持在運行時裝載;不過要開啓這種特性,在編譯安裝要啓用這三種功能; --enable-mpms-shared=all --with-mpm=event
二、支持 event
三、支持異步讀寫
四、在每一個模塊及每一個目錄上指定日誌級別
五、加強版的表達式分析器
六、每請求配置:
七、毫秒級別的 keepalive timeout
八、基於 FQDN 的虛擬主機再也不須要 NameVirtualHost 指令
九、支持使用自定義變量
步驟
首先下載源碼包
apr-1.5.2.tar.gz apr-util-1.5.4.tar.gz pcre-8.39.tar.gz zlib-1.2.8.tar.gz httpd-2.4.23.tar.gz openssl-1.0.1u.tar.gz
給一個我本身作的腳本。拆分一下就是整個步驟。
#!/bin/bash echo "解壓軟件包" cd /root tar zxf apr-1.5.2.tar.gz tar zxf apr-util-1.5.4.tar.gz tar zxf pcre-8.39.tar.gz tar zxf zlib-1.2.8.tar.gz tar zxf httpd-2.4.23.tar.gz tar zxf openssl-1.0.1u.tar.gz echo "安裝apr" cd /root/apr-1.5.2/ ./configure --prefix=/usr/local/apr &> /dev/null make &> /dev/null make install &> /dev/null echo "安裝apr-utils" cd /root/apr-util-1.5.4/ ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr &> /dev/null make &> /dev/null make install &> /dev/null echo "安裝zlib" cd /root/zlib-1.2.8/ ./configure --prefix=/usr/local/zlib &> /dev/null make &> /dev/null make install &> /dev/null echo "安裝pcre" cd ../pcre-8.39/ ./configure --prefix=/usr/local/pcre &> /dev/null make &> /dev/null make install &> /dev/null echo "安裝opensll-1.0.1u" cd ../openssl-1.0.1u/ ./config -fPIC --prefix=/usr/local/openssl enable-shared &> /dev/null make &> /dev/null make install &> /dev/null mv /usr/bin/openssl /usr/bin/openssl.1.0.1e ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl echo "安裝httpd" cd /root/httpd-2.4.23/ ./configure --prefix=/usr/local/http --enable-so --enable-cgi --enable-cgid --enable-ssl --with-ssl=/usr/local/openssl --enable-rewrite --with-pcre=/usr/local/pcre --with-z=/usr/local/zlib/ --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-modules=most --enable-mods-shared=most --enable-mpms-shared=all --with-mpm=event --enable-proxy --enable-proxy-fcgi --enable-expires --enable-deflate &> /dev/null make &> /dev/null make install &> /dev/null ln -s /usr/local/http/bin/* /usr/local/bin/ sed -i s/#ServerName/Servername/g /usr/local/http/conf/httpd.conf cp /usr/local/http/bin/apachectl /etc/init.d/httpd sed -i '1 a # chkconfig: 35 85 15' /etc/init.d/httpd chkconfig --add httpd chkconfig httpd on apachectl start if [ $? -eq 0 ];then echo "!!!!!!Complete!!!!!!" fi
注意,openssl若是不安裝上面的版本,能夠直接
yum -y install openssl-devel
這樣就省去了下載並源碼安裝openssl的時間了,由於安裝openssl時間很長。