接上一篇:總結之:CentOS 6.5 HTTPD服務的全面解讀及配置詳解(1)
CGI(Common Gateway Interface):通用網官接口、這是一種協議。
httpd這個服務他只是把客戶端的請求識別成哪種類型、而後響應給客戶端、他的識別是靠文件的後綴名來識別文件類型的和文件內容、當他無法識別時他直接讓你下載、讓你自己處理了、httpd本身是無法執行腳本的、現在我們在/usr/local/apache/htdocs/目錄下創建一個test.sh的腳本文件、因爲我這裏的apache的工根目錄就是這個路徑下、可以查看一下配置文件、也可以改配置文件:
# vim /usr/local/apache/htdocs/test.sh
#!/bin/bash
#
echo "hello word!"
OK、保存退出、測試一下我們可以看到瀏覽器提示讓我們下載這個文件
於是我們把test.sh的後綴名給去掉、再去試一下:
# mv test.sh test
直接顯示文件中的內容、沒有執行裏面的腳本、而我們想要的只是他echo裏的值而已、在這裏httpd本身無法執行腳本、因此我們想在服務器端執行腳本後再把結果返還給客戶端、那要怎麼實現呢、要執行test.sh腳本就要httpd基於CGI協議調用shell解析器了、那他又是怎麼調用的呢、這裏就用到我們所說的CGI了、那CGI的工作原理是什麼呢:
注意:CGI這種協議過於粗糙和簡陋、並且基於這個模式通信時他要求後端被調用的這個解釋程序爲了達到某種目的、爲了獲取某種資源、必須以管理員的身份運行、這樣很危險。CGI很多程序都要求具有SUID(執行這個程序時不以用戶的身份運行、而是以文件的屬主的身份運行)或SGID(以文件的屬組運行)的權限。
實現步驟:
編輯主配置文件、/etc/httpd24/httpd.conf、定義ScriptAlias、手動編譯時要把CGI的模塊啓用了(LoadModule cgi_module modules/mod_cgi.so)
# vim /etc/httpd24/httpd.conf
# mv /usr/local/apache/htdocs/test /usr/local/apache/cgi-bin/
# cd /usr/local/apache/cgi-bin/
# vim test
保存退出後測試一下、OK、這就可以看到腳本執行後返回的結果了。
基於用戶的訪問控制:
如果我們要基於用戶的訪問控制、那就意味我們的網頁文件不是所有人都可以訪問、也不管來自哪個IP地址、必須輸入一個合法的帳號和密碼纔可以訪問、這就是http的認證機制:
認證類型有兩種:basic(基本認證)和digest(摘要認證)、基本認證的帳號和密碼是明文發送的、摘要認證是根據hash編碼以後發送的。
編輯主配置文件:
# vim /etc/httpd24/httpd.conf
# mkdir -p /www/htdocs/fin
# cd /www/htdocs/fin
# vim index.html
# htpasswd -c -m /etc/httpd/conf/.htpasswd tom
-c:表示創建這個文件
-m:表示用MD5加密的存放密碼
虛擬主機:
在我們的web服務器上想提供多個站點、比較我們想讓一個服務器提供三個站點、那我們就用得虛擬主機了、所謂虛擬主機就是一個物理服務器提供多個站點。
要建立虛擬主機、那這些主機要怎麼去做區別呢、這裏我們有三種不同的方法、一個是基於不同的IP來實現虛擬主機的、另一種基於不同的端口來實現虛擬主機的、還有一種是基於主機名(FQND)來實現虛擬主機的、要注意一點的是:要使用虛擬主機提供多個站點時、得先關閉中心主機。
先關閉/etc/httpd24/httpd.conf下的中心主機
# vim /etc/httpd24/httpd.conf
# vim /etc/httpd24/extra/httpd-vhosts.conf
# cd /usr/local/apache/htdocs
# mkdir a b
分別在a和b下創建兩個html文件
# vim index.html
<h2>www.a.com</h2>
<h2>www.b.com</h2>
修改了配置文件都要重啓一下服務:
# service httpd24 reload
測試一下基於不同的IP地址訪問的、都可以了哦!
基於端口訪問的、那我們就改一下配置文件就可以了
# vim /etc/httpd24/extar.httpd-vhosts.conf
還要在主配置文件中添加一個8080的端口:
# vim /etc/httpd24/httpd.conf
Listen 8080
重啓一直服務、再測試一下不同的端口訪問:
# service httpd24 reload
基於FQND的不同虛擬主機來訪問的、在httpd2.2以上的版本當中要基於虛擬主機的訪問有一個前提、得在定義虛擬主機的配置文件裏把NameVirtualHost *:80這項給啓用起來、沒有這項得自己手動添加進去、則否將無法訪問。
# vim /etc/httpd24/extra/httpd-vhosts.conf
NameVirtualHost *:80
配置好之後那怎麼解析我們的FQND呢、這裏我們就不做解析了、直接在windows下的hosts下明確指定就可以了、編輯C:\Windows\System32\drivers\etc\hosts下的這個文件、加這三個域名地址就可以了、保存退出測試一下咯:
好、這就是我們基於虛擬主機的幾種不同的設置。
httpd的各種配置各種功能、有待我們一一去設置、去嘗試、功能強大、配置簡單、不過、小生初來咋到、有什麼做得不妥之處還望大神指點、在此先謝謝你的關注了!