您好,登錄后才能下訂單哦!
httpd-2.2/2.4配置用法全攻略
本文介紹以下四部分內(nèi)容,且看下文。
一、簡介
The Apache HTTP Server is a powerful, efficient, and extensible web server.
from http://httpd.apache.org/
httpd is the Apache HyperText Transfer Protocol (HTTP) server program. It is designed to be run as a standalone daemon process. When used like this it will create a pool of child processes or threads to handle requests. form https://httpd.apache.org/docs/2.4/programs/httpd.html
以上簡介來自apache官方網(wǎng)頁,我自己簡單理解是這樣的。首先httpd服務(wù)是基于http超文本傳輸協(xié)議的服務(wù)程序。它是非常強大,有效率以及高擴展性的web服務(wù)。它以獨立的守護進程的方式運行,支持多進程多線程處理多個請求。不僅僅這樣httpd還具有很多的特性,比如模塊化是它最強大的一個特性,下面介紹httpd的特性。
二、httpd的特性
我個人理解,httpd有兩大特性(應(yīng)該不全):一是高度模塊化;二是DSO,即可動態(tài)地加載模塊。
2.1 高度模塊化
也許你會問高度模塊化有什么用?高度模塊化用處可大著呢!想象這樣一個情況,假如我們的手機可以實現(xiàn)模塊化,那我們就可以根據(jù)自己的喜歡定制自己鐘愛的手機,我們隨時可以根據(jù)自己的心情,任何時間,任何地點,修改自己的手機,想想是不是很刺激。那httpd也一樣,我們也可以根據(jù)模塊化,定制一款自己鐘愛的httpd服務(wù)。長話短說,高度模塊化就是功能模塊化,可根據(jù)自己需要的功能添加對應(yīng)的模塊。
模塊化中有一個MPM模塊十分的重要,不得不說。
MPM翻譯過來就是多路處理模塊,你也可以理解為多進程處理模塊,因為此模塊跟進程相關(guān)。三個模塊的介紹以及區(qū)別,如下圖所示。
你可以看到,MPM模塊主要是跟進程,線程以及響應(yīng)請求相關(guān),也就是和我們的web并發(fā)訪問相關(guān)的。因此,你可以評估web訪問的相關(guān)情況來選擇合適的模塊。
CentOS7系統(tǒng)中想要查看或者修改MPM在此配置文件:/etc/httpd/conf.modules.d/00-mpm.conf
CentOS6系統(tǒng)中想要查看或者修改MPM在此配置文件:/etc/sysconfig/httpd
另外需要注意的是:CentOS6中event(事件驅(qū)動機制)還不成熟,因此很少用;而CentOS7中event(事件驅(qū)動機制)已經(jīng)成熟,可以投入到生產(chǎn)環(huán)境中使用。
此外httpd還支持很多的模塊,比如mpm_winnt,它是支持windowNT的多線程MPM模塊;比如mod_ssl,它是支持安全加密的模塊,我們想要做一個基于https安全的web訪問就需要用到這個模塊。
模塊有很多,詳見官方文檔:https://httpd.apache.org/docs/2.4/mod/
2.2 DSO(動態(tài)共享對象)
DSO(dynamic shared object),動態(tài)共享對象,即可動態(tài)加載模塊。光有很多模塊不行,還得要實現(xiàn)模塊加載的方式,DSO就是這么一個實現(xiàn),可以動態(tài)加載模塊。
詳見官方鏈接:http://httpd.apache.org/docs/current/dso.html
三、httpd的功能特性
httpd的功能特性如圖所示,因為在后面的常見配置中會被詳細說明,所以此處盡量長話短說。
1.CGI
通用網(wǎng)關(guān)接口
實現(xiàn)動態(tài)頁面
性能差
參考鏈接:http://docs.huihoo.com/apache/httpd/2.0-cn/howto/cgi.html
2.支持虛擬主機的功能
簡單理解,虛擬主機就是在單一機器上運行多個網(wǎng)站。它的實現(xiàn)方式有以下三種:
即基于IP地址實現(xiàn)虛擬主機,基于port端口實現(xiàn)虛擬主機,即基于FQDN實現(xiàn)虛擬主機,F(xiàn)QDN由主機名以及域名組成。它們的特點已在圖中所示,還請看圖。實現(xiàn)虛擬主機必將需要指令,指令將會在常見配置中詳細說明。常見指令如下:
<VirtualHost> ServerName ServerAlias DocumentRoot CustomLog ErrorLog </VirutalHost>
參考鏈接:
https://httpd.apache.org/docs/2.4/vhosts/
http://httpd.apache.org/docs/2.2/vhosts/
3.支持反向代理
簡單理解,就是服務(wù)器的代理。后端服務(wù)器(如Web服務(wù)器)響應(yīng)用戶請求,然后再將響應(yīng)報文返回代理服務(wù)器,再經(jīng)由代理服務(wù)器將響應(yīng)報文發(fā)送給客戶端。
4.支持負載均衡
簡單理解,就是將負載合理分配,以達到最佳化資源使用、最大化吞吐率、最小化響應(yīng)時間、同時避免過載的目的。
5.支持路徑別名
路徑別名關(guān)聯(lián)一個目錄或者文件的路徑,它與url和文件系統(tǒng)路徑的映射相關(guān),會在常見配置中詳細說明。
參考鏈接:http://www.178linux.com/12685
6.支持用戶認證機制
簡單理解,即認證用戶的合法性,比如認證賬號,密碼,身份等等。用戶認證機制支持多種認證方式,常見的有basic(基本認知方式)和digest(摘要認證),基于算法的認證方式。
7.支持第三方模塊
如果你能力足夠強大,完全可以自己制作一個模塊嵌入httpd服務(wù)當中,這個功能相當人性化以及具備開源精神。
四、httpd的程序版本
httpd到目前為止有四個版本。1.3官方已經(jīng)停止維護,不再介紹。
2.0也用到極少,也不再介紹,詳見鏈接:http://httpd.apache.org/docs/2.0/ 主要詳細介紹2.2以及2.4。
4.1 httpd2.2
httpd2.2介紹兩個部分:程序環(huán)境以及常用配置。
4.1.1 httpd2.2程序環(huán)境
httpd2.2的程序環(huán)境如下,在這里我主要介紹CentOS6.8的程序環(huán)境。具體信息還請看思維導(dǎo)圖,文字只做部分補充。
配置文件補充:
配置文件:/etc/httpd/conf/httpd.conf主要分為三大部分內(nèi)容,分別為全局環(huán)境配置,主服務(wù)配置,虛擬主機配置。我們定義的站點信息可以在/etc/httpd/conf/httpd.conf中配置,也可以在/etc/httpd/conf.d/中自定義一個以.conf結(jié)尾的配置文件,在其中配置站點信息。
Section 1: Global Environment
Section 2: 'Main' server configuration
Section 3: Virtual Hosts
主程序文件補充:
/usr/sbin/httpd.worker
/usr/sbin/httpd.event(2.2測試階段)
兩種MPM模塊在上面已有介紹,如果不記得可以返回看看。默認開啟worker模式
日志文件補充:
日志文件分為訪問日志和錯誤日志,我們也可以自定義日志的存放路徑,這個將在常見配置中介紹。
4.1.2 httpd2.2常見配置
總結(jié)了19個常見配置,其中有些是工具與配置無關(guān),但在httpd的工作或者測試中會用到,因此也放在了常見配置中。
這些常見配置主要在以下兩個路徑配置,但個別不再此路徑中,我會在相應(yīng)的文段中特別說明。
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf #推薦此方法,模塊化思想
所有的配置都支持如下的格式
directive value
directive:指令,不區(qū)分字符大小寫;
value:值為路徑時,是否區(qū)分字符大小寫,取決于文件系統(tǒng);
1、修改監(jiān)聽的IP和PORT
Format
Listen [IP-address:]portnumber [protocol]
Note
(1) 省略IP表示為0.0.0.0
(2) Listen指令可重復(fù)出現(xiàn)多次
(3)修改監(jiān)聽socket,重啟服務(wù)進程方可生效
(4)限制其必須通過ssl通信時,protocol需要定義為https
2、長連接(PersistentConnection)
定義
也稱為持久連接,tcp連續(xù)建立后,每個資源獲取完成后不完全斷開連接,而是繼續(xù)等待其它資源請求的進行。
如何斷開
數(shù)量限制
時間限制
副作用
對并發(fā)訪問量較大的服務(wù)器,長連接機制會使得后續(xù)某些請求無法得到正常響應(yīng)
解決方案
使用較短的持久連接時長,以及較少的請求數(shù)量
例子
設(shè)置
KeepAlive On|Off #是否開啟長連接
KeepAliveTimeout 15 #長連接最大時長
MaxKeepAliveRequests 100 #長連接最大請求數(shù)量
測試
telnet WEB_SERVER_IP PORT #使用telnet命令輸入web服務(wù)的IP 端口
GET /URL HTTP/1.1 #請求方式 站點名稱 http協(xié)議版本
Host: WEB_SERVER_IP #主機IP
3、MPM配置
3.1查看httpd的MPM工作模式
ps aux | grep httpd
3.2查看httpd的模塊列表
查看靜態(tài)編譯的模塊:httpd -l
查看靜態(tài)編譯及動態(tài)編譯的模塊:httpd -M
3.3更換使用的MPM機制
配置文件:/etc/sysconfig/http注意:
重啟服務(wù)進程方可生效
3.4MPM配置
3.4.1 prefork的配置
<IfModule prefork.c>
StartServers 8 #起始空閑進程數(shù)
MinSpareServers 5 #最小空閑進程
MaxSpareServers 20 #最大空閑進程數(shù)
ServerLimit 256 #最大活動進程數(shù)
MaxClients 256 #并發(fā)請求的最大數(shù); #請求連接進來不一定會活動,要小于等于serverlimit
MaxRequestsPerChild 4000 #每個子進程在生命周期內(nèi)所能夠服務(wù)的最多請求個數(shù)
</IfModule>
3.4.2 worker的配置
<IfModule worker.c>
StartServers: #啟動的子進程的個數(shù)
MaxClients: #并發(fā)請求的最大數(shù);
MinSpareThreads: #最小空閑線程數(shù);
MaxSpareThreads: #最大空閑線程數(shù);
ThreadsPerChild: #每個子進程可生成的線程數(shù);
MaxRequestsPerChild: #每個子進程在生命周期內(nèi)所能夠服務(wù)的最多請求個數(shù),0表示不限定;
</IfModule>
4、DSO(動態(tài)共享對象)
DSO,即動態(tài)地加載指定模塊。
格式:LoadModule <mod_name> <mod_path>
模塊文件路徑可使用相對路徑,相對于ServerRoot(默認/etc/httpd)
5、定義'Main' server的文檔頁面路徑
ServerName
Description: Hostname and port that the server uses to identify itself(即主機名).
語法格式: ServerName [scheme://]fully-qualified-domain-name[:port]
比如這樣:ServerName www.google.com
DocumentRoot ""
Description: Directory that forms the main document tree visible from theweb(web頁面根目錄,DoucmentRoot指向的路徑為URL路徑的起始位置,其相當于站點URL的根路徑).
Syntax: DocumentRoot directory-path
比如這樣:DocumentRoot /web/www/html
注意:URL PATH與FileSystem PATH不是等同的,而是存在一種映射關(guān)系;
比如存在下面的對應(yīng)關(guān)系
URL / --> FileSystem /var/www/html/
/p_w_picpaths/logo.jpg --> /var/www/html/p_w_picpaths/logo.jpg
6、站點訪問控制常見機制
可基于兩種機制對資源進行訪問控制,一是操作系統(tǒng)中的文件系統(tǒng)路徑,二是通過站點的URL路徑來實現(xiàn)控制。
6.1 通過文件系統(tǒng)路徑實現(xiàn)訪問控制
<Directory>和</Directory>用于封裝一組指令,使之僅對某個目錄及其子目錄生效。任何可以在"directory"作用域中使用的指令都可以使用。Directory-path可以是一個目錄的完整路徑,或是包含了Unixshell匹配語法的通配符字符串。在通配符字符串中,"?"匹配任何單個的字符,"*"匹配任何字符序列。您也可以使用"[]"來確定字符范圍。但需要注意的是,以上通配符都不能匹配"/"字符。
<Files>指令提供了基于文件名的訪問控制的方式。
以下是從官方文檔摘錄下來的,很值得參考:
<Directory""> #對目錄封裝
...
</Directory>
<Directory />
Order Deny,Allow
Deny from All #表示拒絕所有所有人訪問操作系統(tǒng)的/目錄
</Directory>
<Directory ~ "public_html/.*"> #表示對目錄public_html下的任何路徑資源封裝
# ... directives here ...
</Directory>
<DirectoryMatch "^/www/(.+/)?[0-9]{3}"> #將匹配/www/下所有由3個數(shù)字組成的目錄。
<File ""> #基于文件名的訪問控制
...
</File>
<Files "?at.*"> #對cat.html, bat.html, hat.php等等文件進行匹配封裝。
# This would apply to cat.html, bat.html, hat.php and so on.
</Files>
<FileMatch"PATTERN"> #通過正則表達式,基于文件的訪問控制
...
</FileMatch>
<FilesMatch "\.(gif|jpe?g|png)$"> #對.gif,,jpeg,.png等等文件進行匹配封裝
6.1.1<Directory>中“基于源地址”實現(xiàn)訪問控制
6.1.1.1 httpd-2.2中實現(xiàn),通過order指令實現(xiàn)基于源地址的訪問控制
order指令
說明:控制默認的訪問狀態(tài)與Allow和Deny指令生效的順序
語法:Order ordering
默認值Order Deny,Allow
Allow from, Deny from
在下面的例子中,apache.org域中所有主機都允許訪問,而其他任何主機的訪問都將被拒絕。
Order Deny,Allow Deny from all Allow from apache.org
下面這張表說明了allow,deny的規(guī)則
6.1.1.2 httpd-2.4中實現(xiàn)
基于IP控制:
Require ip IP地址或網(wǎng)絡(luò)地址
Require not ip IP地址或網(wǎng)絡(luò)地址
基于主機名控制:
Require host 主機名或域名
Require not host 主機名或域名
下面是httpd-2.2以及httpd-2.4實現(xiàn)訪問控制的幾個例子
控制頁面資源允許所有來源的主機可訪問 httpd-2.2 <Directory ""> Order allow,deny Allow from all </Directory> httpd-2.4 <Directory ""> Require all granted </Directory> 控制頁面資源拒絕所有來源的主機可訪問 httpd-2.2 <Directory ""> Order allow,deny Deny from all </Directory> httpd-2.4 <Directory ""> Require all denied </Directory>
6.2 通過URL路徑實現(xiàn)訪問控制
說明:將封裝的指令作用于匹配的URL
語法:<Location URL-path|URL> ... </Location>
<Location>提供了基于URL的訪問控制。
自foo.com的用戶起效,你可以這樣使用: <Location /status> SetHandler server-status Order Deny,Allow Deny from all Allow from .foo.com </Location> <LocationMatch "/(extra|special)/data"> #說明:將封裝的指令作用于正則表達式匹配的URL </LocationMatch> 將匹配包含子串"/extra/data"或"/special/data"的URL。
6.3 Options指令說明
說明:配置在特定目錄的選項,這些選項可以指定使用哪些特性
語法:Options [+|-]option [[+|-]option] ...
默認值:Options All
option可以為None ,在這種情況下,將不啟用任何額外特性。
All
除MultiViews之外的所有特性都生效。這是默認設(shè)置。
ExecCGI
允許使用mod_cgi執(zhí)行CGI腳本。
FollowSymLinks
服務(wù)器允許在此目錄中使用符號連接特性。
Indexes
如果一個映射到目錄的URL被請求,而此目錄中又沒有DirectoryIndex(例如:index.html),那么服務(wù)器會返回由mod_autoindex生成的一個格式化后的目錄列表。
<Directory /web/docs> Options Indexes FollowSymLinks </Directory>
7、定義站點主頁面
DirectoryIndex index.html index.txt /cgi-bin/index.pl
8、定義路徑別名
說明:映射URL到文件系統(tǒng)的特定區(qū)域
語法:Alias URL-path file-path|directory-path
作用域:server config, virtual host
Alias指令使文檔可以被存儲在DocumentRoot以外的本地文件系統(tǒng)中。
示例:
Alias /p_w_picpath /ftp/pub/p_w_picpath
對"http://myserver/p_w_picpath/foo.gif"的請求,服務(wù)器將返回"/ftp/pub/p_w_picpath/foo.gif"文件。
9、設(shè)定默認字符集
AddDefaultCharset UTF-8
中文字符集:GBK, GB2312, GB18030
10、日志設(shè)定
10.1 訪問日志
CustomLog 指令
說明:設(shè)定日志的文件名和格式
語法:CustomLog file|pipe format|nickname [env=[!]environment-variable]
作用域:server config, virtual host
CustomLog指令用來對服務(wù)器的請求進行日志記錄。第一個參數(shù)指定了日志記錄的位置,第二個參數(shù)指定了寫入日志文件的內(nèi)容.
# 明確使用格式格式字符串
CustomLog logs/access_log "%h %l %u %t \"%r\" %>s %b"
#簡單設(shè)置方式
CustomLog logs/access_log combined #相對于ServerRoot的日志文件名。
LogFormat format strings:
詳情請參考:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats
%h:客戶端IP地址;
%l:Remote User, 通常為一個減號(“-”);
%u:Remote user (from auth; may be bogus if return status (%s) is 401);非為登錄訪問時,其為一個減號;
%t:服務(wù)器收到請求時的時間;
%r:First line of request,即表示請求報文的首行;記錄了此次請求的“方法”,“URL”以及協(xié)議版本;
%>s:響應(yīng)狀態(tài)碼;
%b:響應(yīng)報文的大小,單位是字節(jié);不包括響應(yīng)報文的http首部;
%{Referer}i:請求報文中首部“referer”的值;即從哪個頁面中的超鏈接跳轉(zhuǎn)至當前頁面的;
%{User-Agent}i:請求報文中首部“User-Agent”的值;即發(fā)出請求的應(yīng)用程序;
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
10.2 錯誤日志
ErrorLog 指令
說明:存放錯誤日志的位置
語法:ErrorLog file-path|syslog[:facility]
默認值:ErrorLog logs/error_log (Unix) ErrorLog logs/error.log (Windows 和 OS/2)
作用域:server config, virtual host
ErrorLog指令指定了記錄錯誤日志的文件。如果file-path不是一個以斜杠(/)開頭的絕對路徑,那么將被認為是一個相對于ServerRoot的相對路徑。
示例
ErrorLog /var/log/httpd/error_log
記錄錯誤日志的等級一般是:LogLevel warn,以下是關(guān)于錯誤日志的說明
11、基于用戶的訪問控制
說明:認證(Authorization)就是用戶填入賬號和密碼后再次向服務(wù)端發(fā)送請求報文;認證通過時,則服務(wù)器發(fā)送響應(yīng)的資源。
11.1 基于basic方式認證(明文)
11.1.1 基于用戶進行認證
思路:
(1) 定義安全域
<Directory "">
Options None
AllowOverride None
AuthType Basic
AuthName "String“
AuthUserFile "/PATH_FILE"
Require user username1 username2 ...
</Directory>
(2) 提供賬號和密碼存儲(文本文件)
使用專用命令完成文件的創(chuàng)建及用戶管理
htpasswd [options]/PATH_PASSWD_FILE username
-c:自動創(chuàng)建此處指定的文件,因此,僅應(yīng)該在此文件不存在時使用;
-m:md5格式加密
-s: sha格式加密
-D:刪除指定用戶
-b:批模式添加用戶
htpasswd -b [options] PATH_PASSWD_FILE username password #批量指定用戶名以及密碼
11.1.2 基于組賬號進行認證
思路:
(1) 定義安全域
<Directory "">
Options None
AllowOverride None
AuthType Basic
AuthName "String“
AuthUserFile "PATH_PASSWD_FILE"
AuthGroupFile "PATH_GROUP_FILE"
Require group grpname1 grpname2 ...
</Directory>
(2) 創(chuàng)建用戶賬號和組賬號文件
組文件:每一行定義一個組 GRP_NAME: username1 username2 ...
12、虛擬主機
說明:虛擬主機功能十分重要。簡單來說,虛擬主機可以實現(xiàn)的功能就是在一臺服務(wù)器上虛擬出多臺主機的效果,可以實現(xiàn)多個站點的配置。虛擬主機的實現(xiàn)方案如下
虛擬主機可以通過三種方式實現(xiàn),即基于ip,基于port,基于FQDN(由主機名和域名組成,通常就是指一個站點名)。需要注意的是,在httpd2.2中,如果需要使用虛擬主機的功能,要先禁用mian host中的#DocumentRoot,而httpd2.4則不需要。三種實現(xiàn)方式的特點如下:
虛擬主機的配置方法:
<VirtualHost IP:PORT> ServerName FQDN DocumentRoot "" </VirtualHost>
以下是三種配置方式的例子。
基于IP的虛擬主機示例: <VirtualHost 172.16.100.6:80> ServerName www.a.com DocumentRoot "/www/a.com/htdocs" </VirtualHost> <VirtualHost 172.16.100.7:80> ServerName www.b.net DocumentRoot "/www/b.net/htdocs" </VirtualHost> <VirtualHost 172.16.100.8:80> ServerName www.c.org DocumentRoot "/www/c.org/htdocs" </VirtualHost> 基于端口的虛擬主機 <VirtualHost 172.16.100.6:80> ServerName www.a.com DocumentRoot "/www/a.com/htdocs" </VirtualHost> <VirtualHost 172.16.100.6:808> ServerName www.b.net DocumentRoot "/www/b.net/htdocs" </VirtualHost> <VirtualHost 172.16.100.6:8080> ServerName www.c.org DocumentRoot "/www/c.org/htdocs" </VirtualHost> 基于FQDN的虛擬主機 <VirtualHost 172.16.100.6:80> ServerName www.a.com DocumentRoot "/www/a.com/htdocs" </VirtualHost> <VirtualHost 172.16.100.6:80> ServerName www.b.net DocumentRoot "/www/b.net/htdocs" </VirtualHost> <VirtualHost 172.16.100.6:80> ServerName www.c.org DocumentRoot "/www/c.org/htdocs" </VirtualHost> 注意:如果是httpd-2.2,在使用基于FQDN的虛擬主機時,需要事先使用如下指令: NameVirtualHost IP:PORT
13、status頁面
顯式頁面的狀態(tài)信息
LoadModule status_module modules/mod_status.so #加載網(wǎng)頁狀態(tài)模塊
示例
<Location /server-status> SetHandler server-status Order allow,deny Allow from 172.16 </Location> httpd-2.4 <Location /server-status> SetHandler server-status <RequireAll> Require ip 172.16 </RequireAll> </Location>
14、curl命令
有關(guān)curl命令的用法,請看下圖。
15、user/group
指定以哪個用戶的身份運行httpd服務(wù)進程;
User apache
Group apache
16、mod_deflate模塊
當帶寬壓力大時會啟用壓縮,啟用壓縮不但能優(yōu)化傳輸速度也能節(jié)約帶寬。此模塊的特點如下
下面是一個示例
root@localhost html]# vim /etc/httpd/conf/httpd.conf SetOutputFilter DEFLATE #啟用deflate [root@localhost conf.d]# vim deflate.conf # Restrict compression to these MIME types 定義要壓縮的文件類型 AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE text/css # Level of compression (Highest 9 - Lowest 1) DeflateCompressionLevel 9 #壓縮比,默認為6 # Netscape 4.x has some problems. BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08 have some more problems BrowserMatch ^Mozilla/4\.0[678] no-gzip # MSIE masquerades as Netscape, but it is fine BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
17、https,http over ssl
https即指http基于ssl協(xié)議,這種協(xié)議使得用戶訪問站點時更加的安全。
在httpd中配置https的思路是這樣的:
(1) 為服務(wù)器申請數(shù)字證書
具體步驟可以參考我另一篇博客http://powermichael.blog.51cto.com/12450987/1933580
(2)配置httpd支持使用ssl及使用的證書
1.安裝ssl模塊 yum -y install mod_ssl
2.修改配置文件:/etc/httpd/conf.d/ssl.conf
DocumentRoot #URL映射的文件系統(tǒng)路徑
ServerName #主機名
SSLCertificateFile #簽署證書文件路徑
SSLCertificateKeyFile #私鑰文件存放路徑
(3) 測試基于https訪問相應(yīng)的主機
openssl s_client [-connect host:port] [-cert filename] [-CApath directory] [-CAfile filename]
18、httpd自帶的工具程序
19、httpd的壓力測試工具
4.2 httpd2.4
httpd2.4的介紹分為以下四部分內(nèi)容。由于httpd2.4常用配置和httpd2.2大抵相似,所以在這便不做過多的介紹。不同之處,也已經(jīng)在httpd2.2的配置中說明,所以此處只做httpd2.4程序環(huán)境,新特性以及新模塊的介紹。
4.2.1 httpd2.4程序環(huán)境
補充:修改MPM模塊的文件路徑:/etc/httpd/conf.modules.d/00-mpm.conf
4.2.2 httpd2.4常用配置(省略,請參考httpd2.2常用配置)
4.2.3 httpd2.4新特性
httpd2.4的新特性如圖所示。
4.2.4 httpd2.4新模塊
mod_proxy_fcgi 支持PHP等動態(tài)語言
mod_proxy_scgi SCGI Protocol,支持Python
mod_remoteip 獲取遠端真實訪問IP
想了解更多的新模塊功能,請看官網(wǎng):http://httpd.apache.org/docs/2.4/new_features_2_4.html
5.httpd2.2配置實驗(補充內(nèi)容)
5.1httpd2.2配置安全方案
1.關(guān)閉一些不使用的模塊及功能
可在LoadModule前加#,來注釋掉一些不使用的模塊
2. 隱藏banner信息
ServerTokens OS 修改為:ServerTokens Prod (在出現(xiàn)錯誤頁的時候不顯示服務(wù)器操作系統(tǒng)的名稱)
ServerSignature On 修改為:ServerSignature Off(不回顯apache版本信息)
3. 配置httpd.conf禁止目錄瀏覽
將Options Indexes FollowSymLinks改為Options -Indexes FollowSymLinks
4. 合理配置apache的運行賬戶
為apache單獨建立一個運行賬戶及賬戶組,并在httpd.conf配置
User apache
Group apache
5. 合理控制apache運行賬戶對磁盤的寫入,執(zhí)行權(quán)限
取消apache運行賬戶對網(wǎng)站目錄的寫入權(quán)限,上傳目錄除外,其他非網(wǎng)站目錄盡量不給權(quán)限
6. 配置httpd.conf取消對上傳目錄的php執(zhí)行權(quán)限
<Directory "/var/www/html/aaa">
<FilesMatch ".(php|php5)$">
Deny from all
</FilesMatch>
</Directory>
7. 配置httpd.conf限制禁止訪問的文件夾,例如后臺目錄
<Directory "/var/www/html/aaa">
Deny from all
</Directory>
8. 配置httpd.conf限制一些特殊目錄的特定ip訪問,如內(nèi)部接口等。
<Directory "/var/www/html/aaa">
Order Deny,Allow
Deny from all
Allow from 192.168.1.111
</Directory>
9. 配置httpd.conf限制一些文件類型的訪問,如txt的日志
<Files ~ ".txt$">
Order allow,deny
Deny from all
</Files>
10.配置httpd.conf修改修改監(jiān)聽端口來防止一些內(nèi)部系統(tǒng)被掃描
這樣可以防止一些直接掃描80端口的***
Listen 8080
11. 關(guān)閉對.htaccess的支持
AllowOverride All
改為
AllowOverride None
12. 配置httpd.conf記錄訪問日志
5.2httpd2.2基于FQDN虛擬主機配置實驗
需要注意的地方
1.注釋/etc/httpd/conf/httpd.conf文件中的 #DocumentRoot
2.在/etc/httpd/conf.d/*.conf寫入一個虛擬主機的配置文件(示例如下)
[root@god conf.d]#cat /etc/httpd/conf.d/www.conf NameVirtualHost 10.0.0.68:80 <VirtualHost 10.0.0.68:80> ServerName www1.stux.com DocumentRoot "/web/vhosts/www1" CustomLog /web/vhosts/www1/access_log combined ErrorLog /web/vhosts/www1/error_log <Directory "/web/vhosts/www1"> Options -Indexes -FollowSymLinks AllowOverride None Order allow,deny Allow from all Deny from 192.168.1.0/24 </Directory> <Location /server-status> SetHandler server-status AuthType Basic AuthName "michael" AuthUserFile "/etc/httpd/passwd.conf" Require user michael </Location> </VirtualHost> <VirtualHost 10.0.0.68:80> ServerName www2.stux.com DocumentRoot "/web/vhosts/www2" CustomLog /web/vhosts/www2/access_log combined ErrorLog /web/vhosts/www2/error_log <Directory "/web/vhosts/www1"> Options -Indexes -FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> <Location /server-status> SetHandler server-status AuthType Basic AuthName "michael" AuthUserFile "/etc/httpd/passwd.conf" Require user michael </Location> </VirtualHost>
3.使用httpd -t 檢測配置文件語法
4. 重啟服務(wù):service httpd restart
5.創(chuàng)建相應(yīng)的文件(僅列出映射到URL的主站點目錄及文件)
[root@god www2]#cat /web/vhosts/www1/index.html IP:10.0.0.68 webSite: www1.stuX.com [root@god www2]#cat /web/vhosts/www2/index.html WebSite: www2.stux.com
6.在主機的配置文件中加入域名解析
windos:C:\Windows\System32\drivers\etc中hosts
linux:/etc/hosts
[root@big ~]#cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 big ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.0.0.67 www.ilinux.io www.iunix.io 10.0.0.68 www1.stux.com 10.0.0.68 www2.stux.com #10.0.0.110 www.huwho.cn
7.測試(可使用windows以及l(fā)inux主機)
6.httpd2.4實驗
6.1httpd2.4基于FQDN虛擬主機配置實驗
1.在/etc/httpd/conf.d/*.conf寫入一個虛擬主機的配置文件(示例如下)
[root@localhost ~]# cat /etc/httpd/conf.d/huwho.conf <VirtualHost *:80> DocumentRoot "/web/www/html/vhost1" ServerName "www.huwho.cn" <Directory "/web/www/html/vhost1"> Options FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost> <VirtualHost *:80> DocumentRoot "/web/www/html/vhost2" ServerName "web.huwho.com" <Directory "/web/www/html/vhost2"> Options FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost>
2.創(chuàng)建web站點主目錄
mkdir /web/www/html/vhost{1..2} -pv
3.寫入index.html文件
echo www.huwho.cn > vhost1/index.html
echo web.huwho.com > vhost2/index.html
4.另一臺測試主機寫入域名解析(10.0.0.73)
[root@big ~]#cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 big ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.0.0.67 www.ilinux.io www.iunix.io 10.0.0.68 www1.stux.com 10.0.0.68 www2.stux.com 10.0.0.110 www.huwho.cn 10.0.0.110 web.huwho.com
5.檢測語法
httpd -t
6.重啟服務(wù)器
systemctl restart httpd
7.10.0.0.73主機測試
[root@big ~]#curl www.huwho.cn www.huwho.cn [root@big ~]#curl web.huwho.com web.huwho.com
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。