前言
上文講解了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的虛擬主機
工作原理
實戰配置
案例要求:
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.
檢查語法,重啟服務
注意: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>
創建站點文件,檢查語法,重啟服務并設置開機自啟
測試兩個站點是否可以訪問
測試成功,基于IP的虛擬主機配置完成
注意:測試時請確保測試主機DNS指向DNS服務器且處于離線狀態,如果不想離線,請修改hosts文件,確保FQDN可以解析。如果訪問失敗,請關閉web服務器的selinux。
基于端口的虛擬主機
工作原理
實戰配置
案例要求:
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>
創建站點文件,測試語法,重啟服務
測試新站點是否可以訪問
訪問成功,基于端口的虛擬主機配置完成
基于主機名的虛擬主機
工作原理
實戰配置
案例要求:
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.
檢查語法重啟服務
創建虛擬主機
NameVirtualHost *:80 <VirtualHost *:80> ServerName www.scholar.com DocumentRoot "/web/www" </VirtualHost> <VirtualHost *:80> ServerName dev.scholar.net DocumentRoot "/web/dev" </VirtualHost>
創建站點文件,檢查語法,重啟服務
測試站點是否可以訪問
OK,訪問成功,基于主機名的虛擬主機配置完成
httpd之訪問控制
訪問控制可分為兩種模式:基于用戶訪問控制和基于IP訪問控制
基于用戶訪問控制
工作原理
實戰配置
案例要求:
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>
創建子頁文件,檢查語法,重啟服務
提供認證文件
htpasswd -c: 如果此文件事先不存在,則創建 #注意,只能在創建第一個用戶時使用 -m:以md5的格式編碼存儲用戶的密碼信息 -D:刪除指定用戶
測試認證
輸入賬戶密碼
成功訪問,基于用戶的訪問控制配置完成
基于IP的訪問控制
工作原理
實戰配置
案例要求:
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>
測試語法,重啟服務
測試非授權IP能否正常訪問
訪問被拒絕,接下來用web服務器自測
可以訪問,基于IP的訪問控制配置完成
#elinks需要自行安裝,-dump: 獲取到頁面數據后直接退出進程
httpd之https
前面我們講了基于OpenSSL構建CA的過程,那么如何應用于httpd實現https呢,下面我們就來看一下,https通信是如何實現的。
http事務與https事務對比
https配置
實戰配置
案例要求:
DNS服務器:172.16.10.10
web服務器:172.16.10.110
要求web服務器的www.scholar.com站點使用https
配置httpd工作于https
要配置https首先要安裝mod_ssl模塊,請自行安裝
為服務端生成私鑰,并為其提供證書
簽署證書,我這里本機就是CA就自簽了,CA配置詳見博客
配置使用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端口是否被監聽
將CA證書導出,重命名為*.crt格式,安裝在受信任的根證書頒發機構中,測試https
OK,測試成功,已經實現https的訪問,是不是很簡單呢?到此,https配置完成
The end
httpd的虛擬主機、訪問控制及https就講解到這里啦,httpd的功能確實很強大,其它功能請見后續文章,下文將講解編譯安裝httpd2.4.9和新特性說明及其它功能的實現,感興趣的可見下文。
以上僅為個人學習整理,如有錯漏,大神勿噴~~~
原創文章,作者:書生,如若轉載,請注明出處:http://www.www58058.com/3181