httpd服務之虛擬主機、訪問控制、https配置詳解

前言

上文講解了http協議及httpd的一些特性,是學習web服務需要掌握的一些基礎知識,接下來讓我們進一步了解httpd相關功能的配置,本文講解的是虛擬主機,訪問控制及https等功能的配置。

httpd之虛擬主機

虛擬主機共分為三種模式:基于IP、基于端口、基于主機名(FQDN)

實驗環境介紹

開始之前,先介紹一下httpd在CentOS6.6版本及文件:

版本:
     httpd-2.2.15(CentOS7升級為2.4系列)
配置文件:
        /etc/httpd/conf/httpd.conf
        /etc/httpd/conf.d/*.conf
服務腳本:
	/etc/rc.d/init.d/httpd
	腳本配置文件:/etc/sysconfig/httpd
模塊目錄:
	/etc/httpd/modules: 鏈接文件
	/usr/lib64/httpd/modules	
主程序:
	/usr/sbin/httpd: prefork 
	/usr/sbin/httpd.event: event
	/usr/sbin/httpd.worker: worker
日志文件目錄:
	/var/log/httpd
	access_log: 訪問日志
	error_log: 錯誤日志
站點文檔根目錄:
	/var/www/html/images/a.jpg
	http://www.magedu.com/images/a.jpg

注意:配置虛擬主機之前要關閉中心主機

#DocumentRoot "/var/www/html"

基于IP的虛擬主機

工作原理

基于IP虛擬主機.jpg


實戰配置

案例要求:

DNS服務器:172.16.10.10

web服務器:兩個IP 172.16.10.110、172.16.10.186

要求web服務器同時提供兩個站點(www.scholar.com、ops.scholar.com)

www站點文件為/web/www/index.html 內容為www.scholar.com

ops站點文件為/web/ops/index.html 內容為ops.scholar.com

配置DNS正反向區域文件

#正向區域
$TTL 3600
@       IN      SOA     dns.scholar.com.        admin.scholar.com. (
                                                        2015041301
                                                        2H
                                                        10M
                                                        7D
                                                        1D )
@       IN      NS      dns
@       IN      MX 10   mail
dns     IN      A       172.16.10.10
mail    IN      A       172.16.10.12
www     IN      A       172.16.10.110
ops     IN      A       172.16.10.186   #確保站點可以解析
pop     IN      CNAME   mail
ftp     IN      CNAME   www
#反向區域文件
$TTL 3600
@       IN      SOA     dns.scholar.com.        admin.scholar.com. (
                                                        2015041301
                                                        2H
                                                        10M
                                                        7D
                                                        1D )
@       IN      NS      dns.scholar.com.
10      IN      PTR     dns.scholar.com.
12      IN      PTR     mail.scholar.com.
110      IN     PTR     www.scholar.com.
186     IN      PTR     ops.scholar.com.

檢查語法,重啟服務

1.jpg

注意:DNS具體配置詳見博客

創建虛擬主機

[root@scholar ~]# vim /etc/httpd/conf/httpd.conf 

<VirtualHost 172.16.10.110:80>
        ServerName www.scholar.com
        DocumentRoot "/web/www"
</VirtualHost>
<VirtualHost 172.16.10.186:80>
        ServerName ops.scholar.com
        DocumentRoot "/web/ops"
</VirtualHost>

創建站點文件,檢查語法,重啟服務并設置開機自啟

2.jpg

測試兩個站點是否可以訪問

3.jpg

4.jpg

測試成功,基于IP的虛擬主機配置完成

注意:測試時請確保測試主機DNS指向DNS服務器且處于離線狀態,如果不想離線,請修改hosts文件,確保FQDN可以解析。如果訪問失敗,請關閉web服務器的selinux。

基于端口的虛擬主機

工作原理

基于端口虛擬主機.jpg

實戰配置

案例要求:

DNS服務器:172.16.10.10

web服務器:172.16.10.110

要求web服務器開啟8080端口,一個FQDN提供兩個站點,訪問www.scholar.com和

www.scholar.com:8080返回不同結果  

8080站點文件為/web/port/index.html 內容為 www.scholar.com:8080

創建虛擬主機

Listen 80
Listen 8080     #監聽8080端口

<VirtualHost 172.16.10.110:80>
        ServerName www.scholar.com
        DocumentRoot "/web/www"
</VirtualHost>
<VirtualHost 172.16.10.110:8080>
        ServerName www.scholar.com
        DocumentRoot "/web/port"
</VirtualHost>

創建站點文件,測試語法,重啟服務

5.jpg

測試新站點是否可以訪問

6.jpg

訪問成功,基于端口的虛擬主機配置完成

基于主機名的虛擬主機

工作原理

基于主機名虛擬主機.jpg

實戰配置

案例要求:

DNS服務器:172.16.10.10

web服務器:172.16.10.110

要求web服務器提供兩個站點(www.scholar.com dev.scholar.net )

www站點文件為/web/www/index.html 內容為www.scholar.com

dev站點文件為/web/dev/index.html      內容為dev.scholar.net

配置DNS添加區域及區域文件

[root@lab ~]# vim /etc/named.conf 

zone "scholar.net" IN {
        type master;
        file "scholar.net.zone";
};
zone "16.172.in-addr.arpa" IN {
        type master;
        file "172.16.10.net";
};
#正向區域文件
$TTL 3600
@       IN      SOA     dns.scholar.net.        admin.scholar.net. (
                                                        2015041302
                                                        2H
                                                        10M
                                                        7D
                                                        1D )
@       IN      NS      dns
dns     IN      A       172.16.10.10
www     IN      A       172.16.10.110
dev     IN      A       172.16.10.110
#反向區域文件
$TTL 3600
@       IN      SOA     dns.scholar.net.        admin.scholar.net. (
                                                        2015041302
                                                        2H
                                                        10M
                                                        7D
                                                        1D )
@          IN      NS      dns.scholar.net.
10.10      IN      PTR     dns.scholar.net.
10.110     IN      PTR     www.scholar.net.
10.110     IN      PTR     dev.scholar.net.

檢查語法重啟服務

7.jpg

創建虛擬主機

NameVirtualHost *:80

<VirtualHost *:80>
        ServerName www.scholar.com
        DocumentRoot "/web/www"
</VirtualHost>
<VirtualHost *:80>
        ServerName dev.scholar.net
        DocumentRoot "/web/dev"
</VirtualHost>

創建站點文件,檢查語法,重啟服務

8.jpg

測試站點是否可以訪問

9.jpg

10.jpg

OK,訪問成功,基于主機名的虛擬主機配置完成

httpd之訪問控制

訪問控制可分為兩種模式:基于用戶訪問控制和基于IP訪問控制

基于用戶訪問控制

工作原理

基于用戶訪問控制.jpg

實戰配置

案例要求:

DNS服務器:172.16.10.10

web服務器:172.16.10.110

要求web服務器在www.scholar.com站點下創建一個子頁為站點管理頁,非授權用戶禁止訪問。

子頁位置/web/www/admin/index.html 內容為Admin

創建子頁

<VirtualHost *:80> 
        ServerName www.scholar.com
        DocumentRoot "/web/www"
<Directory "/web/www/admin">
         Options none
         AllowOverride AuthConfig
         AuthType Basic            #認證方式
         AuthName "Admin Area."    #質詢時彈出的提示信息
         AuthUserFile /etc/httpd/conf/.htpasswd #用戶賬號密碼存放位置
         Require valid-user   #所有合法用戶都可訪問,也可用定義單用戶及組認證
</Directory>
</VirtualHost>

創建子頁文件,檢查語法,重啟服務

11.jpg

提供認證文件

htpasswd
-c: 如果此文件事先不存在,則創建  #注意,只能在創建第一個用戶時使用
-m:以md5的格式編碼存儲用戶的密碼信息
-D:刪除指定用戶

12.jpg

測試認證

13.jpg

輸入賬戶密碼

14.jpg

成功訪問,基于用戶的訪問控制配置完成

基于IP的訪問控制

工作原理

基于IP訪問控制.jpg

實戰配置

案例要求:

DNS服務器:172.16.10.10

web服務器:172.16.10.110

要求web服務器的dev.scholar.net站點,作為測試站點,只允許web服務器訪問測試

添加訪問控制IP

<VirtualHost *:80>
        ServerName dev.scholar.net
        DocumentRoot "/web/dev"
<Directory "/web/dev">
        Order allow,deny         #httpd2.4系列不再支持這種限定,改為新的限定方式
        allow from 172.16.10.110
</Directory>
</VirtualHost>

測試語法,重啟服務

15.jpg

測試非授權IP能否正常訪問

16.jpg

訪問被拒絕,接下來用web服務器自測

17.jpg

可以訪問,基于IP的訪問控制配置完成

#elinks需要自行安裝,-dump: 獲取到頁面數據后直接退出進程

httpd之https

前面我們講了基于OpenSSL構建CA的過程,那么如何應用于httpd實現https呢,下面我們就來看一下,https通信是如何實現的。

http事務與https事務對比

https.png

https配置

實戰配置

案例要求:

DNS服務器:172.16.10.10

web服務器:172.16.10.110

要求web服務器的www.scholar.com站點使用https

配置httpd工作于https

要配置https首先要安裝mod_ssl模塊,請自行安裝

為服務端生成私鑰,并為其提供證書

18.jpg

簽署證書,我這里本機就是CA就自簽了,CA配置詳見博客

19.jpg

配置使用https的虛擬主機

[root@scholar ssl]# vim /etc/httpd/conf.d/ssl.conf 

SSLCertificateFile /etc/httpd/ssl/httpd.crt    #證書位置
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key #私鑰位置

DocumentRoot "/web/www"  #虛擬主機站點文件
ServerName www.scholar.com:443   #虛擬主機ServerName

測試語法,重啟服務,查看443端口是否被監聽

20.jpg

將CA證書導出,重命名為*.crt格式,安裝在受信任的根證書頒發機構中,測試https

21.jpg

OK,測試成功,已經實現https的訪問,是不是很簡單呢?到此,https配置完成

The end

httpd的虛擬主機、訪問控制及https就講解到這里啦,httpd的功能確實很強大,其它功能請見后續文章,下文將講解編譯安裝httpd2.4.9和新特性說明及其它功能的實現,感興趣的可見下文。

以上僅為個人學習整理,如有錯漏,大神勿噴~~~

原創文章,作者:書生,如若轉載,請注明出處:http://www.www58058.com/3181

(1)
書生書生
上一篇 2015-04-14
下一篇 2015-04-14

相關推薦

  • 磁盤分區、軟RAID創建及shell腳本參數傳遞,for循環,運算表達式應用 1、創建一個10G分區,并格式為ext4文件系統。 先使用fdisk工具創建一個10G的新分區。使用fdisk打開要創建磁盤分區的物理設備fdisk /dev/sdb,然后使用n指令創建新的分區,分區類型選此處選擇為主分區,第一個柱面使用默認的1,最后的柱面,使用+10G這種表示方…

    Linux干貨 2016-12-26
  • 20160808課堂練習(sed工具)

    練習: 1、  刪除/etc/grub2.conf文件中所有以空白開頭的行行首的空白字符 # sed 's@^[[:space:]]\+@@' /etc/grub2.cfg                    2、刪除/etc/…

    Linux干貨 2016-08-10
  • 學而時習之

    1、 Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 文件管理類命令 ls, 查看:cat,more,less,tail,head,tac 復制:cp 移動:mv 刪除:rm 創建:touch 元數據屬性:stat 查看內容類型:file 文本編輯器:nano,vi Linux的文件類型       &…

    Linux干貨 2016-09-24
  • 選擇判斷專題腳本編程_第九周練習

    Q1:寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash # declare -i y=0 declare -i n=0 for i in $(cut…

    Linux干貨 2016-12-25
  • M22 程序員偷懶戰法

    前段時間有個外國的程序猿走紅網絡,這個哥們可以說是懶到了極點,上班請假給領導發短信寫腳本,下班晚回家給老婆發短信寫腳本,甚至于接個咖啡也要寫腳本。這個哥們離職之后,他的同事在他的辦公電腦上發現了這些腳本,并公布到了網上,引起眾程序猿紛紛膜拜。最近我剛好學到shell腳本部分,就讓我分析其中的一個跟領導請假的腳本吧。 #!/bin/sh -e # Exit e…

    Linux干貨 2017-04-06
  • 文件權限

    文件屬主、文件屬組、
    文件權限、目錄權限、特殊權限

    2018-03-13
欧美性久久久久