1. 程式人生 > >Linux自學筆記——httpd基本應用(3)

Linux自學筆記——httpd基本應用(3)

centos7配置https 虛擬主機


httpd2.4

新特性:

1) MPM支持運行為DSO機制;以模塊形式按需加載;

2) event MPM生產環境可用;

3) 異步讀寫機制;

4) 支持每模塊及每目錄的單獨日誌級別定義;

5) 每個請求相關的專用配置;

6) 增強版的表達式分析式;

7) 毫秒級持久連接時長定義;

8) 基於FQDN的虛擬主機也不再需要NameVirutalHost指令;

9) 新指令,AllowOverrideList;

10)支持用戶自定義變量;

11)更低的內存消耗;

新模塊:

1) mod_proxy_fcgi

2) mod_proxy_scgi

3) mod_remoteip

安裝httpd2.4

依賴於apr-1.4+,apr-util-1.4+,[apr-iconv]

apr:apache portableruntime

centos 6

默認:apr-1.3.9,apr-util-1.3.9;

安裝httpd2.4必須得手動編譯安裝;

開發環境包組:DevelopmentTools,Server Platform Development

開發程序包:pcre-devel

編譯安裝步驟:

1) apr-1.4+

#./configure–prefix=/usr/local/apr

#make&& make install

2) apr –util-1.4+

#./configure–prefix=/usr/local/apr-util --with-apr=/usr/local/apr

#make&& make install

3) httpd-2.4

#./configure–prefix=/usr/local/apache24 -sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi--enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr--with-apr-util=/usr/local/apr-util --enable-modules=most--enable-mpms-shared=all --with-mpm=prefork

#make&& make install

自帶的服務控制腳本:apachectl

示例:在centos6上編譯安裝httpd2.4;

1. 準備開發環境包組:Development Tools,Server PlatformDevelopment;

技術分享

2. 準備開發程序包:pcre-devel;

技術分享

3. 準備apr-1.5.0,apr-util-1.5.3;

技術分享

4. 編譯安裝步驟;

1) 編譯安裝apr-1.5.0;

a. 安裝前準備,解壓縮,進入目錄;

技術分享

b. ./configue命令;

技術分享

c. make && make install

技術分享

2) 編譯安裝apr-util-1.5.3;

a. 安裝編譯前準備,解壓縮,並進入文件夾;

技術分享

b. ./configue命令;

技術分享

c. make && make install

技術分享

3) 安裝編譯httpd-2.4

a. 安裝編譯前準備,準備httpd-2.4,解壓縮,進入文件夾;

技術分享

b. ./configue命令;

技術分享

c. make && make install

技術分享

5. 內置工具apachectl開啟服務,測試80端口是否打開;

技術分享

6. 配置文件在/etc/httpd24;

技術分享

Centos7: httpd-2.4

配置文件:

/etc/httpd/conf/httpd.conf

/etc/httpd/conf.modules.d/*.conf

/etc/httpd/conf.d/*.conf

配置應用:

1. 切換使用的MPM

編輯配置文件/etc/httpd/conf.modules.d/00-mpm.conf,啟動要啟用的MPM相關的LoadModule指令即可;

技術分享

Note:啟用即去掉#即可,

2. 基於IP的訪問控制;

允許所有主機訪問:Require all granted

拒絕所有主機訪問:Require all deny

控制特定的ip訪問:

Require ip IPADDR:授權指定來源的ip訪問;

Require not ip IPADDR:拒絕;

控制特定的主機訪問:

Require host HOSTNAME:授權指定來源的主機訪問;

Require not host HOSTNAME:拒絕

HOSTNAME:

FQDN:特定主機;

Domain.tld:指定域名下的所有主機

示例:centos7主機:192.168.19.130;測試機192.168.19.134

<Requireall>

Require all granted

Require not ip 192.168.19.128

<Requireall>

1) 開啟服務;

技術分享

2) 測試機訪問這臺centos7 web服務器;

技術分享

Note:測試時需要關閉centos7的selinux和iptables;

3) 編輯配置文件,基於IP訪問控制;

技術分享

4) 再次用測試機訪問測試;

技術分享

Note:此次測試需要將/etc/httpd/conf.d目錄下的welcome.conf重命名;否則測試機訪問將依舊能訪問;

5) 將配置文件的ip限制取消,測試機將再次可以訪問;

3. 虛擬主機

基於FQDN的虛擬主機也不再需要NameVirutalHost指令:

1) 註釋DocumentRoot指令;

技術分享

2) 編輯虛擬主機配置文件,

技術分享

3) 重載服務,並編輯創建相關目錄文件;

技術分享

4) 測試;

技術分享

4. ssl

5. KeepAliveTimeout #ms

毫秒級持久連接時長定義;

練習題:

1、建立httpd服務,要求:

(1)提供兩個基於名稱的虛擬主機:

www1.stuX.com,頁面文件目錄為/web/vhosts/www1;錯誤日誌為/var/log/httpd/www1/error_log,訪問日誌為/var/log/httpd/www1/access_log;

www2.stuX.com,頁面文件目錄為/web/vhosts/www2;錯誤日誌為/var/log/httpd/www2/error_log,訪問日誌為/var/log/httpd/www2/access_log;

(2)通過www1.stuX.com/server-status輸出其狀態信息,且要求只允許提供賬號的用戶訪問;

(3)www1不允許192.168.19.134ip主機訪問;

演示:

1. 修改配置文件;

技術分享

2. 創建相關目錄及文件;

1) 創建用戶組訪問控制需要的密碼文件;

技術分享

2) 創建日誌目錄;

技術分享

3) 創建DocumentRoot目錄;

技術分享

4) 創建index.html文件;

技術分享

3. 在測試機上編輯/etc/hosts文件;

技術分享

4. 重載服務及測試;

1) 在192.168.19.134主機上測試,分別訪問www1.stuX.com,www2.stuX.com;

訪問www1.stuX.com:

技術分享

訪問www2.stuX.com:

技術分享

2) 在192.168.19.128主機上測試,訪問www1.stuX.com;

技術分享

結果可以訪問,可以看出,配置的基於ip限制訪問是有效的;

3) 在192.168.19.134主機上測試,訪問www1.stuX.com/server-status,www2.stuX.com/server-status;

訪問www1.stuX.com/server-status:輸入jerry的賬號時,不在組內,不能訪問;

技術分享

訪問www1.stuX.com/server-status:輸入tom的賬號時,能查看;

技術分享

訪問www2.stuX.com/server-status:在配置文件中沒有設置從此處輸出配置信息;

技術分享

2、為上面的第2個虛擬主機提供https服務,使得用戶可以通過https安全的訪問此web站點;

(1)要求使用證書認證,證書中要求使用國家(CN),州(Jiangsu),城市(Suzhou),組織為(Amaxchina);

(2)設置部門為Ops,主機名為www2.stuX.com;

演示:在上面的http服務器上進行操作,

1. 建私有CA;

技術分享

2. httpd服務器申請證書;

技術分享

3. CA簽署證書;

技術分享

4. 配置httpd支持使用ssl;

1) 安裝ssl模塊;

技術分享

2) 檢查是否安裝完成;

技術分享

3) 修改ssl配置文件;/etc/httpd/conf.d/ssl.conf;

技術分享

5. 編輯/etc/hosts文件;

技術分享

6. 重啟,測試;

1) 查看監聽端口;

技術分享

可以看出443端口和80端口都已開啟;

2) 訪問測試;

技術分享

訪問http無問題,訪問https被告知需要證書;

利用curl --cacert /path/to/cafile.pem URL 測試;


Linux自學筆記——httpd基本應用(3)