httpd配置详解
CentOS6.5默認安裝2.2.15的版本,以該版本為例,說明配置文件的組成。
安裝生成的文件有如下幾個主要目錄:
1、程序運行目錄,目錄位置:/etc/httpd,包含conf、conf.d、logs、modules、run幾個目錄。
conf目錄中有httpd的主配置文件httpd.conf;
conf.d目錄是配置文件的組成部分,如果使用ssl模塊,那么會在這個目錄下生成對應的配置文件;
logs目錄是軟鏈接文件,指向/var/log/httpd是記錄httpd運行時的日志文件的目錄;
modules目錄頁是軟鏈接文件,指向/var/lib64/httpd/modules目錄,是httpd可加載的模塊文件目錄;
run目錄同樣也是軟鏈接,指向/var/run/httpd。
2、腳本文件:/etc/rc.d/init.d/httpd
/etc/rc.d/htcacheclean:也是一個腳本文件,當把httpd用于緩存服務器時,提供緩存清理功能的腳本。
3、腳本配置文件:/etc/sysconfig/httpd
4、模塊所在目錄:/usr/lib64/httpd/modules(64位平臺),/etc/httpd/modules目錄是指向這個目錄的軟鏈接。
5、程序二進制文件所在目錄:/usr/sbin,在/usr/sbin目錄下有/usr/sbin/httpd、/usr/sbin/httpd.event、/usr/sbin/httpd.worker三個二進制程序文件。
httpd-2.2.15默認工作在prefork模型下,如果要工作在worker模型下可以在腳本文件中修改:6、日志文件目錄:/var/log/httpd
日志文件默認為該目錄下的access_log和error_log,如果需要改變,可自定義位置,并添加對應的文件,手動生成的日志文件,需要提前創建,否則啟動服務時會失敗。
7、站點文檔根目錄:/var/www/html。用來存放站點的網頁文件等。
httpd的配置文件:
第一段:全局配置段
1、ServerTokens OS:ServerTokens指令用于在網頁中顯示使用的apache軟件版本,不建議開啟。2、ServerRoot "/etc/httpd":服務器運行的根目錄。
3、PidFile run/httpd.pid:httpd守護進程的pid號存放的文件所在位置/var/run/httpd.pid。
4、Timeout 60:定義的是TCP/IP連接三次握手建立連接時,如果服務器沒有響應,會話的超時時長默認為60秒。
5、KeepAlive {On|Off}:定義客戶端連接時是否開啟持久連接,默認值為Off。
6、MaxKeepAliveRequest 100:定義客戶端連接時維持的最大連接數量,默認值為100。
7、KeepAliveTimeout 15:定義使用持久連接時每個連接自動斷開的時長,默認值為15,注:如果服務器連接數量很多,達到連接最大值時,如果有新的連接請求,那么未處于活動狀態的連接會自動斷開。
8、httpd工作在prefork模型時的參數設置:
StartServers 8:httpd啟動時默認啟動的服務器進程數量,默認值為8
MinSpareServers 5:httpd運行時最小空閑進程數量,默認值為5
MaxSpareServers 20:httpd運行時最大空閑進程數量,默認值為20
ServerLimit 256:httpd可啟動的最大進程數量,默認值為256,由于prefork模型下服務器進程與并發客戶端連接數量保持1:1的對應關系,所以服務器進程可啟動最大數量與并發的客戶端連接數量保持一致
MaxClients 256:httpd服務進程可同時間響應的客戶端連接數量,默認值為256
MaxRequestsRerChild 4000:每個服務器進程可響應的客戶端對資源請求的最大次數,達到次數后該進程的生命周期會被結束。
9、httpd工作于worker模型時的參數設置:
StartServers 4:httpd啟動時默認啟動的服務器進程數量,默認值為4
MaxClients 300:httpd并發可響應的客戶端連接數量,默認值為300
MinSpareThreads 25:工作于worker模型下的服務器進程會生成線程來響應用戶請求,每個線程可以響應一個用戶的請求,MinSpareThreads定義的是所有服務器進程生成的線程中最小空閑的數量,默認值為25
MaxSpareThreads:允許最大空閑的線程數量,默認值為75
ThreadsPerChild 25:每個進程可以生成的線程最大數量,默認值為25
注:在該模型下,每個線程響應一個用戶的連接請求,如果一個連接斷開,那么該線程的生命周期會結束。httpd服務啟動時,如果沒有用戶連接請求,默認啟動的4個進程會生成25個線程,以滿足最小空閑線程的數量要求,這些線程會分布在這4個進程中。如果用戶連接數量達到300甚至超出,那么就需要300個線程滿足客戶連接請求,相應的服務器進程數量是12個,由于有最小線程數量要求,所以相應的進程數量應該要多于12,多出的部分進程,要生成空閑的25個線程,以滿足后續的連接請求。
10、Listen 80:指定服務器監聽的地址和端口,IP地址省略時,默認監聽所有地址,監聽的地址和端口可以有多個。
11、Load Module MODULES :指定加載的模塊。
12、Include conf.d/*.conf:包含conf.d/*.conf路徑下的配置文件。該路徑下的文件為配置文件的組成部分。
13、User apache Group apache:指定允許httpd服務的用戶和組。
第二段:主服務器配置段
1、ServerAdmin root@localhost:設置服務器管理員的郵箱地址,默認值是root@localhost,可自行修改
2、ServerName www.example.com:80:設置服務器的主機名稱,默認未啟用,如果在/etc/hosts文件中定義的IP與主機名的解析關系與hostname中指定的主機名不一致時,會有報錯信息,但不影響使用。
可以修改/etc/hosts文件中的IP與主機名稱的解析條目與hostname值相同即可。
3、DocumentRoot "/var/www/html":指定站點根目錄,默認值為"/var/www/html"
4、站點路徑訪問控制:
????1)基于站點文件路徑做訪問控制,定義方式:
????<Directory "/path/to/somewhere">
????...
????</Directory>
????在Directory中可用的訪問控制選項有:
????????Options:Options可用的值有Indexes,FollowSymlinks,Include,SymLinksOwnerMatch,ExecCGI
????????AllowOverride:支持在每個頁面目錄下創建.htaccess文件用于實現對此目錄中資源訪問時的訪問控制功能,AllowOverride指令可用的值有All,None,Options,FileInfo,AuthConfig,Limit。 ????
????2)基于URL訪問路徑做訪問控制,定義方式:
????<Location "/path/to/URL">
????...
????</Location>
5、基于IP地址對站點資源做訪問控制,使用Order指令,指令可用的值有allow,deny,默認的定義凡是是Order allow,deny Allow from all;允許所有人訪問。
6、DirectoryIndex index.html index.html.var:站點目錄下的默認頁面,如果一個站點的資源目錄有很多,每個目錄下都可以設置一個默認頁面,通常情況下是為網站的默認首頁設定一個index.html。
7、ErrorLog logs/error_log:定義錯誤日志文件的位置,默認值為/etc/httpd/logs/error_log,這個文件是軟鏈接,指向的是/var/log/httpd/error_log。默認值使用的是相對地址的定義方式,相對于程序運行的根目錄/etc/httpd而言的。
8、LogLevel warn:定義錯誤日志的警告級別,默認值為warn,可用值有:debug、info、notice、warn、error、crit、alert、emerg,默認情況下比定義的警告級別高的錯誤記錄都會被記錄。
9、LogFormat :定義日志的顯示格式,常用的格式有combined、common、referer、agent。格式中使用的各變量及其含義如下:
????%h:客戶端地址
????%l:遠程登錄名,通常為-
????%u:認證時輸入的用戶名,沒有認證時為-
????%t:服務器接收到用戶請求的時間
????%r:請求報文的起始行
????%>s:響應狀態碼
????%b:響應報文的長度,單位是字節
10、CustomLog logs/access_log combined:自定義日志文件及使用格式,默認自定義的日志文件為/etc/httpd/logs/access_log,使用的日志格式為combined。
11、Alias /URL/ "/path/to/somewhere/":路徑別名,實現URL路徑的映射,從而所訪問的頁面資源不再依賴于站點的根目錄,如果定義了路徑別名,那么相應的路徑的訪問權限需要在<Directory>...</Directory>中定義,同時別名中的路徑分隔符與路徑中使用的分隔符要保持一致。
在配置文件中定義的站點根目錄為/var/www/html目錄,所以默認情況下在瀏覽器中輸入的路徑都應該以該目錄為根路徑,意味著默認情況下所有的站點需要用到的文件或資源都應該在該目錄下,但為了站點的目錄管理更合理,而將icons目錄和cgi-bin目錄獨立了出來,放在了/var/www目錄下,與html同級,但這兩個目錄又是站點資源放置的主要目錄,因而要訪問到這兩個目錄就需要用Alias指令將這兩個目錄使用別名的方式定義出來,以便在瀏覽器中可以用別名的方式來訪問到,這也是在配置文件中定義這兩個目錄的別名的原因,不過cgi-bin目錄中存放的是腳本文件,所以用ScriptAlias指令來定義。
12、AddDefaultCharset UTF-8:設定默認字符集,默認值為UTF-8,這個選項有些情況下需要調整,比如安裝discuz論壇時,discuz軟件的默認字符集為SC_GBK,所以我們需要調整默認字符集,以便在安裝過程中顯示正常的中文字體,默認字符集的選項只能設定一種,不能設定多個。
如果不希望更改這里的設置,可以在瀏覽器的查看菜單中選擇編碼,然后選擇使用中文編碼就可以正常顯示。
13、支持CGI腳本:支持使用CGI腳本的定義是在定義CGI腳本路徑別名時定義出來的,使用的指令是ScriptAlias,在瀏覽器中輸入的路徑為/cgi-bin/,而/var/www/cgi-bin/是腳本默認的存放位置,訪問的格式為:http://server/cgi-bin/。
第三段:虛擬主機配置
虛擬主機通常在一臺物理主機中,多個虛擬主機的訪問方式可以基于不同IP,不同端口或者基于主機名的方式來訪問,基于主機名的多個虛擬主機的IP地址和端口是相同的,端口通常為80,主機名稱部分不同,基于主機名的虛擬主機是依據請求首部中的Host字段來區分要訪問的不同主機的,截圖中的最后一行可以看到Host字段。
轉載于:https://blog.51cto.com/9164364/1538182
總結
- 上一篇: 修复cocos2dx的Label,WP8
- 下一篇: Mysql 主从复制常用管理任务介绍