詳解CentOS配置和管理web服務-Apache

http://zhang789.blog.51cto.com/11045979/1859026css

詳解CentOS配置和管理web服務-Apache

 


 

目錄

  • 一、web介紹html

  • 二、web歷史和工做原理linux

  • 三、http請求流程nginx

  • 四、關於Apacheweb

  • 五、Apache服務器軟件安裝使用apache

  • 六、符號連接和虛擬目錄vim

  • 七、頁面重定向windows

  • 八、Apache日誌文件centos

  • 九、Apache安全配置瀏覽器

  • 十、虛擬主機

    • 10.一、基於IP

    • 10.二、基於域名

    • 10.三、基於端口    

web服務器配置和管理

http協議簡介

http協議,全稱HyperText Transfer Protocol,中文名稱超文本傳輸協議,是互聯網應用最爲普遍的一種網絡協議,全部的www都必須遵照這個標準,設計http最初的目的爲了提供一種發佈和接收HTML(一種頁面標記語言)

web服務器介紹

萬維網又稱web(world wide web,www),是在internet上以超文本爲基礎造成的信息網,用戶能夠經過瀏覽器能夠訪問web服務器上面的信息資源

web服務的歷史和工做原理

web服務的歷史

Internet上最熱門的服務之一就是萬維網,它是因特網上以超文本爲基礎造成的信息網,用戶能夠經過查閱Internet上的信息資源,例如:平時上網使用瀏覽器訪問網站信息的最多見應用。


web在1989年起源於歐洲的一個國家核能源研究院中,因爲隨着研究的深刻和發展,研究院的文件愈來愈多,並且人員流動很是大,要找到相關的資料是很是困難的,因而一個科學家就提出這樣的一個建議,咋服務器上維護一個目錄,目錄的連接指向每一個人的文件,每一個人維護本身的文件,保證別人訪問的時候老是最新的文檔,這個建議獲得了採納並不斷的完善後,最終造成現在Internet上最多見的www服務

web的工做原理

web系統是客戶端/服務端的C/S架構,因此有服務器端端和客戶端程序兩個部分,經常使用的服務器端軟件有Apache,IIS,nginx等,常見的客戶端瀏覽器有IE,Mozilla等,用戶在瀏覽器地址欄中輸入資源定位地址(URL)來訪問web頁面


web頁面是以超文本標記語言(HTML)進行編寫,它是文本不在是傳統的書頁方式文本,而是能夠在瀏覽器上面從一個頁面跳轉到另外一個頁面,使用HTML語言編制的web除了文本意外還能夠嵌入視頻,音樂,圖象等

wKioL1f2fdWiVss5AADwA4EAD84609.png

瀏覽一個頁面時,(好比http://www.baidu.com/index.html)瀏覽器會向服務器www.baidu.com發送一條HTTP請求,服務器會去尋找所指望的對象(在這個例子就是/index.html),若是發送成功,就將對象,對象類型,對象長度以及其餘一些信息放在http響應中發給客戶端

[root@localhost ~]# curl -I www.baidu.com
HTTP/1.1 200 OK
Server: bfe/1.0.8.18
Date: Thu, 06 Oct 2016 07:23:46 GMT
Content-Type: text/html
Content-Length: 277
Last-Modified: Mon, 13 Jun 2016 02:50:09 GMT
Connection: Keep-Alive
ETag: "575e1f61-115"
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Pragma: no-cache
Accept-Ranges: bytes

http協議請求原理過程圖

wKiom1f2fe3ys2ThAADfWzPyWtc678.png

一次完整的Http請求處理過程:

       (1) 創建或處理鏈接請求;
       (2) 接收請求;
       (3) 解析請求,處理請求;
       (4) 加載用戶請求的資源;
       (5) 構建響應報文;
       (6) 發送響應報文;
       (7) 記錄訪問於日誌中;

訪問錯誤響應碼

           1xx:
           2xx: 成功響應
           3xx: 重定向響應
           4xx: 客戶端錯誤
           5xx: 服務端錯誤

知名Web服務

某個網站統計的web軟件排名

wKioL1f2fgrz_8xvAAC6wvjbyas121.png

Windows系統中默認Web服務程序是IIS(Internet Information Services),這是一款圖形化的網站管理工具,IIS程序不光能提供Web網站服務,還可以提供FTP、NMTP、SMTP等服務功能,但只能在Windows系統中使用。


nginx——最初於2004年10月4日爲俄羅斯知名門戶站點而開發的,做爲一款輕量級的網站服務軟件,因其穩定性和豐富的功能而深受信賴,但最最最被承認的是低系統資源、佔用內存少且併發能力強,目前國內如新浪、網易、騰訊等門戶站均使用。


Apache——取自美國印第安人土著語Apache,寓意着擁有高超的做戰策略和無窮的耐性,因爲其跨平臺和安全性普遍被承認且擁有快速、可靠、簡單的API擴展。目前擁有很高的Web服務軟件市場佔用率,全球使用最多的Web服務軟件,開源、跨平臺(可運行於Unix,linux,windows中)。


Tomcat——屬於輕量級的Web服務軟件,通常用於開發和調試JSP代碼,一般認爲Tomcat是Apache的擴展程序。

關於Apache服務

Nginx程序做爲Web服務軟件屆的後起之秀已經經過自身的努力與優點贏得了大批站長的信賴,不得不說真的很棒!可是Apache程序做爲老牌的Web服務軟件因其卓越的穩定性與安全性成爲了紅帽RHEL7系統中默認的網站服務軟件,一樣也是紅帽RHCSA與RHCE考試認證中避不開的考題。

Apache簡介

Apache是一種開源的httpd服務器軟件,能夠在UNIX、Linux以及Windows在內的大多數主流計算機操做系統系統上面運行,Apache是由Illinois大學Urbana-Champaign的國家高級計算機程序中心開發,它的名字取自apatchy server 的讀音,即充滿補丁的服務器,可見在最初的時候該程序並非很是完善

Apache優勢

但因爲Apache是開源軟件,因此獲得開源社區的支持,不斷開發出新的功能特性,並修補了原來的缺陷,通過多年不斷的完善,現在的Apache已是最流行的web服務端軟件之一Apache擁有如下衆多的特性,保證了它能夠高速穩定的運行

支持全部的計算機平臺
簡單有效的配置文件
支持虛擬主機
支持多種方式的http認證
集成Perl腳本語言
集成代理服務器模塊
支持實時監視服務器狀態和定製服務器日誌
支持服務器端包含指令
支持Php
支持第三方軟件開發商提供的軟件
Apache模塊化

Apache服務器的安裝使用

httpd相關軟件及安裝

httpd-2.2.15-29.el6_4.x86_64.rpm                //服務端主程序包,服務器運行核心軟件包
httpd-devel-2.2.15-29.el6_4.x86_64.rpm          //apache開發程序包,如開發附加模塊的時候須要此軟件
httpd-manual-2.2.15-29.el6_4.noarch.rpm     //Apache手冊文檔
httpd-tools-2.2.15-29.el6_4.x86_64.rpm          //一塊兒apache的工具,如htpasswd
apr-devel-1.3.9-5.el6_2.x86_64.rpm              //安裝httpd-devel的時候的依賴包
apr-util-devel-1.3.9-3.el6_0.1.x86_64.rpm           //安裝httpd-devel的時候的依賴包
expat-devel-2.0.1-11.el6_2.x86_64.rpm           //安裝httpd-devel的時候的依賴包

安裝Apache

Linux基本都自帶Apache軟件

[root@localhost ~]# ls /mnt/Packages/ | grep "httpd"
httpd-2.2.15-53.el6.centos.x86_64.rpm
[root@localhost ~]# yum install -y httpd httpd-manual
[root@localhost ~]# yum install -y elinks  //這是一個字符界面瀏覽器 使用方式 「elinks 域名」
[root@localhost ~]# service httpd restart          //服務啓動
[root@localhost ~]# chkconfig httpd on         //服務開機啓動
[root@localhost ~]# netstat -antup | grep 80       //啓動是否成功,查看端口是否開放

相關文件

[root@localhost ~]# ls /etc/httpd/                 //apache工做目錄,配置文件目錄
[root@localhost ~]# ls /etc/httpd/conf/httpd.conf          //yum或rpm方式安裝的配置文件位置
[root@localhost ~]# ls /etc/httpd/conf.d/          //這個是默認httpd.conf裏面include位置
[root@localhost ~]# ls /var/log/httpd/                 //默認日誌目錄
[root@localhost ~]# ls /var/log/httpd/access_log           //默認訪問日誌
[root@localhost ~]# ls /var/log/httpd/error_log            //默認錯誤日誌
[root@localhost ~]# ls /var/www/html/                  //默認網站根目錄
[root@localhost ~]# ls /etc/httpd/modules/             //apache庫文件,模塊文件目錄
[root@localhost ~]# ls /etc/httpd/run/httpd.pid            //apache運行的進程pid
[root@localhost ~]# ls /var/www/manual/                    //apache手冊也,須要安裝httpd-manual

查看Apache的相關信息

查看Apache軟件版本信息

[root@localhost ~]# httpd -V
Server version: Apache/2.2.15 (Unix)
Server built:   May 11 2016 19:28:33
Server's Module Magic Number: 20051115:25
Server loaded:  APR 1.3.9, APR-Util 1.3.9
Compiled using: APR 1.3.9, APR-Util 1.3.9
Architecture:   64-bit
Server MPM:     Prefork
 threaded:     no
   forked:     yes (variable process count)

查看已經被編譯的模塊

[root@localhost ~]# httpd -l
Compiled in modules:
 core.c
 prefork.c
 http_core.c
 mod_so.c

httpd.conf主配置文件的解釋

ServerTokens OS                     #返回操做系統類型,如apache/2.0.54(unix)
ServerRoot "/etc/httpd"             #服務器配置文件目錄
ServerName 192.168.1.235:80     #服務器主機名
PidFile run/httpd.pid               #apache運行進程ID存放
Timeout 60                          #超時時間,多少s沒有反應就超時
KeepAlive Off                       #是否容許一個永久的連接,設置爲OFF的時候,不能保持鏈接功能,傳輸效率比較低,設置爲ON時,能夠提升服務器傳輸文件的效率,建議開啓
MaxKeepAliveRequests 100        #設置KeepAlive爲ON時,設置客戶端每次鏈接容許請求相應最大文件數,默認100個
KeepAliveTimeout 15                 #超時時間,同一個客戶端下一個請求15s沒收到就超時
Listen 80                          #監聽端口,默認本地IP,若是指定ip寫上IP:80
<IfModule prefork.c>
StartServers       8               #服務開始起啓動8個進程
MinSpareServers    5                #最小空閒5個進程
MaxSpareServers   20                #最多空閒20個進程
ServerLimit      256              #服務器容許配置進程數上線
MaxClients       256                #最大鏈接數256,超過要進入等候隊列
MaxRequestsPerChild  4000       #每一個進程生存期內服務最大的請求數量,0表示用不結束
</IfModule>
<Directory />
   Options FollowSymLinks          #Options Indexes 目錄瀏覽  FollowSymLinks用鏈接瀏覽
   AllowOverride None          #設置爲none,忽略.htaccess
</Directory>
LoadModule auth_basic_module modules/mod_auth_basic.so          #載入的庫,模塊
● ● ● ● ● ●
Include conf.d/*.conf               #conf.d裏面的conf文件也屬有效配置文件
User apache                         #apache運行以哪一個身份運行
Group apache                        #apache運行以哪一個組的身份運行
ServerAdmin root@localhost          #管理員郵箱
DocumentRoot "/var/www/html"        #默認的主目錄,若是改動要改動兩處,Directory
<Directory "/var/www/html">
   Options Indexes FollowSymLinks
   AllowOverride None
   Order allow,deny                #這裏默認後者生效,也就是deny生效
   Allow from all                      #這裏說容許全部
</Directory>
LogLevel warn                               #日誌等級
DirectoryIndex index.html index.html.var        #首頁
AccessFileName .htaccess                        #access文件名
AddDefaultCharset UTF-8                     #支持的語言,默認編碼
#配置文件的最後是虛擬主機的字段,其中你大部分字段作個瞭解便可,用到的時候去查便可

檢測配置文件語法

[root@localhost ~]# cat /etc/httpd/conf/httpd.conf | grep "^Listen"            //修改web端口爲55667
Listen 55667
[root@localhost ~]# apachectl configtest
httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
Syntax OK
[root@localhost ~]# service httpd reload           //切記http服務不能夠隨便重啓,修改配置文件要從新載入配置文件
Reloading httpd:

wKioL1f2fi3jdkCOAABLS0FZopk753.png

建立一個測試首頁

[root@localhost ~]# cd /var/www/html/
[root@localhost html]# ls
[root@localhost html]# echo "<h1>zhang789.blog.51cto.com</h1>" >> index.html
[root@localhost html]# ll
total 4
-rw-r--r-- 1 root root 33 Oct  6 09:06 index.html

wKiom1f2fkjwIdm-AAAwtc4SVyU662.png

符號連接和虛擬目錄

DocumentRoot的參數是指定web發佈文檔的主目錄,在默認狀況下,用戶經過http訪問web服務器瀏覽的全部資料都是存在該目錄下,該參數只能設置一個目錄做爲參數值,那麼是否是在Apache中就能有一個目錄存放文檔文件呢?若是文檔根目錄空間不足,要放到其餘的文件系統中應該怎麼辦,

符號連接

例如:/var/www/html/doc這個目錄,但願吧/usr/share/doc目錄映射成/var/www/html/doc,配置就是一個軟鏈接就行

[root@localhost html]# ln -s /usr/share/doc/ doc
[root@localhost html]# ll
total 4
lrwxrwxrwx 1 root root 15 Oct  6 09:49 doc -> /usr/share/doc/
-rw-r--r-- 1 root root 33 Oct  6 09:06 index.html

wKiom1f2fmKgJY5zAACmIOJTar8285.png

虛擬目錄(別名)

使用虛擬目錄是另外一種將根目錄之外的內容加入站點中的辦法,下面舉一個簡單的例子,把/var/log目錄映射成網站根目錄下的/log下 
一、打開httpd.conf文件,添加以下內容

Alias /log "/var/log"
<Directory "/var/log/">
   Options Indexes FollowSymLinks
   AllowOverride None
   Order allow,deny
   Allow from all
</Directory>

二、重載httpd服務,而後訪問加資源URL/log路徑

wKiom1f2foyDrSG1AAByAK-AB50837.png

頁面重定向

若是用戶常常訪問某個網站的網頁,他極可能會把頁面的URL添加到收藏夾,在每次訪問網站的時候,能夠直接點擊收藏夾的記錄訪問,可是若是網站進行了目錄架構的更改,用戶再使用原來的URL訪問時就會出現404頁面沒法找到的錯誤,爲了方便用戶可以使用原來的URL進行訪問,這時就須要頁面重定向了

假設網站有一個doc目錄,如今管理員要對網站的目錄結構就行整理,並把/doc目錄移動到/old-doc目錄下,若是用戶仍是訪問原來的URL就會出現404的錯誤,

一、打開httpd.conf配置文件,添加以下內容

Alias /old-doc "/usr/share/doc"
<Directory "/usr/share/doc">
   Options Indexes FollowSymLinks
   AllowOverride None
   Order allow,deny
   Allow from all
</Directory>
#指定當用戶訪問/doc目錄遇到404錯誤自動重定向到http://192.168.211.128:55667/old-doc
Redirect 303 /doc http://192.168.211.128:55667/old-doc

二、重載httpd服務 
三、使用瀏覽器再次訪問

wKioL1f2frTQk2CHAACCLaTV0vQ993.png

Apache日誌文件

Apache運行會生成兩個日誌文件,access_log(訪問日誌)error_log(錯誤日誌)

[root@localhost httpd]# pwd
/var/log/httpd
[root@localhost httpd]# ls
access_log  error_log

一、訪問日誌文件

Apache的訪問日誌就是記錄web服務器的全部訪問活動(以下圖)

wKioL1f2ftfj8vA_AAFo3tr68oY343.png從文件內容能夠看出,每一行都記錄了一次訪問記錄,由7個部分組成

192.168.211.1 - - [06/Oct/2016:10:23:26 +0800] "GET /old-doc/ HTTP/1.1" 200 149404 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36"
//客戶端地址、訪問者的標示、訪問者的驗證名字、請求的時間、請求類型、請求的http代碼、發送給客戶端的字節數

7部分詳細說明 
客戶端地址:代表訪問網站的客戶端IP地址 
訪問者的標示:該項通常爲空白,用「-」代替 
訪問者驗證的名字:該項用於記錄訪問者進行身份驗證時提供的名字,通常狀況下該項也爲空白 
請求的時間:記錄訪問操做的發生時間 
請求類型:該項記錄了服務器收到是一個什麼類型的請求,通常類型包括GET、post、HEAD 
請求的代碼:經過該項信息能夠知道請求是否成功,遇到了什麼樣的問題錯誤,正常狀況下,爲200 
發送給客戶端的字節數:表示發送給客戶端的總的字節數,經過檢查該數值是否和文件大小相同,能夠知道傳輸是否被中斷

二、錯誤日誌

錯誤日誌是Apache提供的另一種標準日誌,該日誌記錄了Apache服務運行過程發生的錯誤日誌,httpd.conf配置文件中提供了一下兩個配置參數:

ErrorLog logs/error_log
LogLevel warn

它們分別用於配置錯誤日誌的位置和日誌的級別 
日誌的級別說明

嚴重程度     等級     說明
1           emerg   系統不能夠用
2           alert   須要當即引發注意的狀況
3           crit    危急狀況
4           error   錯誤信息
5           warn    警告信息
6           notiee  須要引發注意的狀況
7           info    通常信息
8           debug   由運行於debug模式的程序輸出的信息

emerg級別的信息最爲嚴重,debug級別最低,若是用戶吧錯誤日誌設置成warn級別,則嚴重程度由1-5會被記錄下來

wKiom1f2fyvjqQRSAAERvWLRlc4230.png從文件內容能夠看出,每一行記錄了一個錯誤,由3個部分組成, 
時間 錯誤等級 錯誤信息

[Thu Oct 06 10:22:24 2016] [error] [client 192.168.211.1] Directory index forbidden by Options directive: /usr/share/doc/

第一個括號是錯誤發生的時間 2016年10月06 10:22:24 
第二個是錯誤等級:error 
第三個是錯誤的內容:[客戶192.168.211.1]目錄索引選項禁止指令:/usr/share/doc/

Apache安全配置

Apache提供了多種安裝控制手段,包括web訪問控制,用戶登陸密碼設置及.htaccess文件

訪問控制

訪問控制是提升apache服務器安全級別的最有效的手段之一,看下Diertory段,Diertory段用於設置與目錄相關的參數和指令,包括訪問控制和認證

<Diretory 目錄的路徑> 
           目錄相關的配置參數和指令
</Diretory>

每一個Diretory段以<Diretory>開始</Diretory>結束,<Diretory>指定目錄及其裏面的全部文件和子目錄,在段中能夠設置與目錄相關的參數和指令,包括訪問控制和認證

<Directory "/var/www/icons">
   Options Indexes MultiViews FollowSymLinks
   AllowOverride None
   Order allow,deny
   Allow from all
</Directory>

一、Allow 指令 
Allow指令用於設置那些客戶端能夠訪問Apache

Allow for [All/全域名/部分域名/ip地址/網絡地址/cidr地址。。。]

all表示全部客戶端 
全域名:表示域名對應的客戶端 www.baidu.com 
部分域名:表示域內的全部客戶端 baidu.com 
IP地址:如172.16.2.1 
網絡地址:如192.168.1.0/256.356.355.0 
CIDR地址:172.16.20.0/24

二、Deny指令 
Deny指令用戶設置拒絕那些客戶端訪問Apache,格式和Allow同樣

三、Order指令 
Order指令用於指定訪問規則的前後順序,有一下兩種

Order Allow,Deny;先執行容許訪問規則,在執行拒絕訪問規則
Order Deny,Allow;  先執行拒絕訪問規則,在執行容許訪問規則

實例: 
如今,假設網站中一個logo目錄,是登陸網站後臺的目錄,因此網站管理員但願該目錄只能由該網站管理員訪問(192.168.211.1),其餘都不能訪問

一、打開httpd.conf配置文件添加以下內容

<Directory "/var/www/html/log">
   Options Indexes FollowSymLinks
   AllowOverride None
   Order deny,allow
   Deny from all
   Allow from 192.168.211.1
</Directory>
httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
Syntax OK
[root@localhost httpd]# service httpd reload
Reloading httpd:

wKiom1f2f0_QkX3sAAAqv8-mI8I376.png

用戶認證

Apache的用戶認證方式包括基本(Basic)認證和摘要(Digest)認證兩種,摘要認證比基本認證更加安全,但有個別瀏覽器不支持,基本認證很簡單,當用戶在瀏覽器輸入認證模式的URL時候,會彈出一個對話框,要求輸入帳戶密碼,當用戶輸入後,web服務驗證他的正確性,若是正確,則返回頁面,錯誤則返回401頁面

要使用用戶認證,首先要建立好用戶名和密碼,在Apache中提供htpasswd命令用於建立和修改密碼文件,該命令在<apache 安裝目錄>/support目錄下

要在/etc/httpd/conf/下建立一個名爲users的認證密碼文件,並在密碼文件添加sam用戶

[root@localhost ~]# htpasswd -c /etc/httpd/conf/users sam
New password:
Re-type new password:
Adding password for user sam

認證密碼文件建立後,若是再向users文件添加一個ken的用戶 不加-C

[root@localhost ~]# htpasswd /etc/httpd/conf/users ken
New password:
Re-type new password:
Adding password for user ken

與/etc/passwd文件相似,認證密碼都是一行一個

[root@localhost ~]# cat /etc/httpd/conf/users 
sam:fGNODsapTMn72
ken:8HenVGxWHKF8A
用戶名:加密後的密碼

htpasswd沒有刪除帳戶指令,直接在配置文件裏面刪除

建立完成認證密碼後,還要對配置文件進行修改,用戶認證是在httpd.conf配置文件中<Directort>段中進行設置

案例: 
如今網站管理員爲了更加安全,增強控制,對log目錄通過sam用戶認證才能訪問

一、在httpd.conf配置文件添加以下內容

<Directory "/var/www/html/log">
   Options Indexes FollowSymLinks
   AllowOverride None
   AuthType Basic      //設置認證的方式    
   AuthName "doc"    //設置保護區域的名稱
   AuthUserFile /etc/httpd/conf/users   //認證密碼的文件
   require user sam    //指定那些用戶能夠進行訪問
   Order deny,allow
   Deny from all
   Allow from 192.168.211.1
</Directory>

二、檢測語法,重載服務

[root@localhost ~]# apachectl configtest
httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
Syntax OK
[root@localhost ~]# service httpd reload
Reloading httpd:
[root@localhost ~]#

wKioL1f2f-TCok3LAABvdyNVQXE780.png

虛擬主機

虛擬主機就是指將一臺物理服務器虛擬多臺web服務器,能夠有效的節省硬件資源,Apache支持基於IP地址或主機名的虛擬機服務

虛擬主機的介紹

虛擬主機就是將一臺物理服務器虛擬成多臺web服務器,對於一些小規模的網站,經過web虛擬主機技術、能夠跟其餘網站共享一臺服務器,有效減小系統的運行成本, 
好比說,一家從事web託管的公司,他爲企業提供web服務,那麼他確定不會爲每一個企業準備一臺物理服務器,


Apache提供3中虛擬主機方案:基於IP的虛擬主機服務基於主機名的虛擬主機基於端口的虛擬主機

基於IP的虛擬主機

基於IP的虛擬主機,服務上面必須設置多個IP地址,服務器根據請求目的的IP地址來判斷請求的是哪一個虛擬主機

Apache中是經過httpd.conf配置文件的<VirtualHost>段來配置虛擬主機服務的

<VirtualHost IP地址:主機名[:端口] IP地址:主機名[:端口]...>
   虛擬主機的相關配置參數和指令
<VirtualHost>

案例: 
假設一臺服務器上面有兩個IP地址,分別爲192.168.211.128和192.168.211.130,對應www.server1.com和www.server2.com,如今要根據這兩個IP地址來實現虛擬主機 
當客戶端訪問192.168.211.128訪問/var/www/html/server1 
當客戶端訪問192.168.211.130訪問/var/www/html/server2

問題: 
若是服務器只有一個網卡,能夠經過單網卡配置多IP來模擬

一、在/var/www/html/server1和server2下,分別生成index.html文件

[root@localhost html]# mkdir server{1,2}
[root@localhost html]# ls
index.html  log  loganalyze  old-doc  server1  server2
[root@localhost server1]# cat index.html
<HTML>
<HEAD>
<TITLE> 基於IP的虛擬主機測試 </TITLE>
</HEAD>
<BODY>
基於IP的虛擬主機測試:<FONT SIZE="6">www.server1.com</FONT>
</BODY>
</HTML>

爲了管理方便在/etc/httpd/conf.d/下面建立一個vhost.conf(在httpd.conf主配置裏面有指定,conf.d/*.conf都是可生效的文件)

[root@localhost conf.d]# vim /etc/httpd/conf.d/vhost.conf
<VirtualHost 192.168.211.128>
ServerAdmin     admin@zabbix.com
DocumentRoot    /var/www/html/server1
       <Directory"/var/www/html/server1">
            AllowOverride none
            Allow from all
            Order Allow,deny  
       </Directory>
       ErrorLog /log/httpd/vhost_log/error_server1.log
</VirtualHost>
<VirtualHost 192.168.211.130>
ServerAdmin     admin@zabbix.com
DocumentRoot    /var/www/html/server2
       <Directory"/var/www/html/server2">
            AllowOverride none
            Allow from all
            Order Allow,deny  
       </Directory>
       ErrorLog /log/httpd/vhost_log/error_server2.log
</VirtualHost>

重載Apache服務訪問

wKiom1f2gBzyKVY1AAA6gkF4kyM253.png

wKiom1f2gBzh4VSMAAA4uPvy4PA538.png

 

基於主機名的虛擬主機(域名)

大多數物理機IP有限,基於IP這種方式太浪費IP資源了,更多的都是使用基於域名的虛擬主機服務

http1.1協議中,增長了對主機名的虛擬主機服務的支持,具體的說,當客戶端向web服務器發送請求時,客戶端想要訪問的主機名也經過請求頭中的Host語句傳遞給web服務器,web服務器接受到這個請求後,經過檢查Host語言來判斷客戶端請求的是哪一個虛擬主機

與基於IP地址虛擬主機的配置方法不一樣,用戶必須在conf配置文件使用NameVirtualHost參數 
NameVirtualHost IP地址/主機名[:端口]

NameVirtualHost 192.168.211.128
<VirtualHost 192.168.211.128>
ServerName      www.server1.com
DocumentRoot    /var/www/html/server1
       <Directory "/var/www/html/server1">
            AllowOverride none
            Allow from all
            Order Allow,deny  
       </Directory>
       ErrorLog /log/httpd/vhost_log/error_server1.log
</VirtualHost>
NameVirtualHost 192.168.211.130
<VirtualHost 192.168.211.130>
ServerName      www.server2.com
DocumentRoot    /var/www/html/server2
       <Directory "/var/www/html/server2">
            AllowOverride none
            Allow from all
            Order Allow,deny  
       </Directory>
       ErrorLog /log/httpd/vhost_log/error_server2.log
</VirtualHost>

檢查配置語法,重載httpd服務

wKioL1f2gErREu2RAAA8RGCGooI555.png

wKioL1f2gEuRnGNUAAA-SLIqcKM765.png

基於端口的虛擬主機

在同一IP,同一主機名下,使用監聽不一樣端口,訪問時須要加訪問的端口。使用很少,通常用來作內網測試使用 
配置文件

<VirtualHost 192.168.211.128:80>
ServerName      www.server1.com
DocumentRoot    /var/www/html/server1
       <Directory "/var/www/html/server1">
            AllowOverride none
            Allow from all
            Order Allow,deny  
       </Directory>
       ErrorLog /log/httpd/vhost_log/error_server1.log
</VirtualHost>
Listen 8080             //添加監聽端口
<VirtualHost 192.168.211.128:8080>
ServerName      www.server2.com
DocumentRoot    /var/www/html/server2
       <Directory "/var/www/html/server2">
            AllowOverride none
            Allow from all
            Order Allow,deny  
       </Directory>
       ErrorLog /log/httpd/vhost_log/error_server2.log
</VirtualHost>

重載服務

wKiom1f2gHORArxeAAA6M6sqaxA341.png

wKioL1f2gHSytigAAABB3pVRwWA319.png

相關文章
相關標籤/搜索