主配置文件/etc/httpd/conf/httpd.conf
主要分為三部分:
- Section 1: Global Environment
- Section 2: 'Main' server configuration
- Section 3: Virtual Hosts
1、Global Environment
ServerRoot "/etc/httpd"
服務器設置的最頂層的根目錄logs、modules等數據都放在這個目錄下
PidFile run/httpd.pid
進程pid文件,啟動服務后,主進程的id號就保存在這個文件里
它是個相對目錄。考慮到ServerRoot,因此這個文件的絕對路徑為/etc/httpd/run/httpd.pid
Timeout 60
連接等待超時時間60秒
KeepAlive On
是否允許持續性的連接,也就是一個tcp連接可以傳送多個文件資料
MaxKeepAliveRequests 100
與keepAlive有關,定義該次連接最大傳輸數量。0表示不限制。
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</IfModule>
關于prefork模式的配置
<IfModule worker.c>
StartServers 3
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
關于worker模式的配置
Listen 80
默認監聽端口
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
...省略以下
服務加載的模塊,如果某些模塊不需要,可以注釋掉。
Include conf.d/.conf
加載額外配置文件,也就是/etc/httpd/conf.d/.conf文件
User apache
Group apache
定義進程用戶和組
2、 'Main' server configuration
ServerAdmin root@localhost
系統管理員郵箱,當網站出現問題時,錯誤信息會顯示的郵箱(錯誤回報)
ServerName www.example.com:80
設置主機名。千萬記得,輸入的主機名要找得到IP。
DocumentRoot "/var/www/html"
定義默認的站點網頁文檔根目錄
DirectoryIndex index.html index.html.var
默認主頁,當定義的index.html和index.html.var這兩個文件不存在,系統會找/var/www/error/noindex.html
站點訪問控制的配置
1、基于客戶端來源地址
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
-
Options:后跟1個或多個以空白字符分隔的選項列表
在選項前的+, - 表示增加或刪除指定選項 - Indexes:表示當主頁不存在時,允許用索引方式列出文件列表。如果禁止列出文件列表,去掉這個選項或者在選項前面加上-。
-
FollowSymLinks:允許訪問符號鏈接文件所指向的源文件
None:全部禁用
All: 全部允許 -
AllowOverride None:表示與訪問控制相關的指令可以放在指定目錄下的.htaccess(由AccessFileName指定)文件中,覆蓋之前<directory>里的配置指令。如:
[root@CentOS6 html]#ls -a . .. a.html b.tex .htaccess h.txt [root@CentOS6 html]#cat .htaccess options indexes followSymlinks #這里的.htaccess文件配置的options indexes followSymlinks, #會覆蓋 <Directory "/var/www/html">里面相關的配置。
-
order:定義生效次序;寫在后面的表示默認法則
- Order allow,deny
- Order deny,allow
- Allow from, Deny from:如果沒有該語句,則默認允許所有或者拒絕所有ip訪問
- 例1:
<Directory "/var/www/html"> Order allow,deny Allow from all deny from 172.16.100.122 </Directory> #上面的配置allow允許所有ip訪問,deny拒絕172.16.100.122。 #由于order定義deny放在allow后面,因此deny會實際生效。
- 例2:
<Directory "/var/www/html"> Order deny,allow Allow from all deny from 172.16.100.122 </Directory> #上面的配置allow允許所有ip訪問,deny拒絕172.16.100.122。 #由于order定義allow在后面,因此allow會實際生效,172.16.100.122仍然可以訪問/var/www/html。 #如果沒有Allow from, Deny from 語句,則默認允許或者拒絕所有ip訪問
2、基于用戶賬號控制訪問
<Directory "/var/www/html/admin">
AuthType Basic
AuthName "admin directory"
AuthUserFile "/etc/httpd/conf.d/.httpusers"
Require user httpuser1 httpuser2
</Directory>
上面定義安全域/var/www/html/admin,當用戶訪問這個目錄時,需要賬號驗證。
用戶和密碼文件保存在/etc/httpd/conf.d/.httpusers
可訪問用戶為httpuser1 httpuser2
用戶創建命令
[root@CentOS6 conf.d]#htpasswd -c /etc/httpd/conf.d/.httpusers httpuser1
New password:
Re-type new password:
Adding password for user httpuser1
- htpasswd
htpasswd [options] /PATH/HTTPD_PASSWD_FILE username
選項:
-c:創建文件用戶文件,僅僅在第一次文件不存在時使用。否則會覆蓋源文件。
-m:md5方式加密,默認選項
-s:sha方式加密
-D:刪除用戶
日志配置
ErrorLog logs/error_log
錯誤日志保存在/etc/httpd/logs/error_log
/etc/httpd/logs/是個軟連接。文件真實路徑是
/var/log/httpd/error_log
LogLevel warn
錯誤日志等級
可選的值包括:debug, info, notice, warn, error,crit,alert,emerg.
LogLevel warn 表示記錄warm級以上的日志,即warn, error,crit,alert,emerg
LogFormat "%h %l %u %t "%r" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
定義日志格式。common、referer、agent表示格式的名稱
%h:客戶端IP地址
%l:遠程用戶,啟用mod_ident才有效,通常為減號“-”
%u:驗證(basic, digest)遠程用戶,非登錄訪問時,為一個減號“-”
%t:服務器收到請求時的時間
%r:First line of request,即表示請求報文的首行;記錄了此次請求的“方法”,“URL”以及協議版本
%>s:響應狀態碼
%b:響應報文的大小,單位是字節;不包括響應報文http首部
%{Referer}i:請求報文中首部“referer”的值;即從哪個頁面中的超鏈接跳轉至當前頁面的
%{User-Agent}i:請求報文中首部“User-Agent”的值;即發出請求的應用
CustomLog logs/access_log common
使用上面定義的common這個格式作為日志格式
alias /download/ /app/download/
路徑別名定義,格式: Alias /URL/ "/PATH/"
這里的定義表示當用戶訪問/var/www/html/download時,訪問的是/app/download/這個目錄