HTTPD2.4文件組成及常見配置

一、程序文件組成

CentOS 7程序環境:yum安裝httpd-2.4

官方幫助文檔:http://httpd.apache.org/docs/2.4/

配置文件:

/etc/httpd/conf/httpd.conf

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

檢查配置文件語法:

httpd –t

服務單元文件: /usr/lib/systemd/system/httpd.service

配置文件:/etc/sysconfig/httpd

服務控制和啓動:

systemctl enable|disable httpd.service

systemctl {start|stop|restart|status|reload} httpd.service

站點網頁文檔根目錄:

/var/www/html

模塊文件路徑:

/etc/httpd/modules    #下面文件的軟連接

/usr/lib64/httpd/modules

主程序文件:

/usr/sbin/httpd

主進程文件:

/etc/httpd/run/httpd.pid

日誌文件目錄:

/var/log/httpd

access_log: 訪問日誌

error_log:錯誤日誌

幫助文檔包:

httpd-manual

二、配置講解

1、顯示服務器版本信息

ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full     #各種類型

http://httpd.apache.org/docs/2.4/mod/core.html#servertokens   各種類型的格式

image.png

vi /etc/httpd/conf.d/test.conf

ServerTokens Prod    #   建議使用

image.png

2、修改監聽的IP和port

Listen [IP:]PORT

(1) 省略IP表示爲本機所有IP

(2) Listen指令至少一個,可重複出現多次

Listen 80

Listen 8080

image.png

3、持久連接

Persistent Connection:連接建立,每個資源獲取完成後不會斷開連

接,而是繼續等待其它的請求完成,默認關閉持久連接

斷開條件:時間限制:以秒爲單位, 默認5s,httpd-2.4 支持毫秒級

副作用:對併發訪問量大的服務器,持久連接會使有些請求得不到響應

折中:使用較短的持久連接時間

設置:KeepAlive On|Off

KeepAliveTimeout 15

模擬測試:telnet 192.168.12.27 80

GET /URL HTTP/1.1

Host: 192.168.12.27

4、

DSO: Dynamic Shared Object

加載動態模塊配置,不需重啓即生效

/etc/httpd/conf/httpd.conf

Include conf.modules.d/*.conf

httpd -M  #查看所有模塊,如果需要註釋對應模塊即可

httpd -l   #查看靜態模塊,核心模塊

添加模塊示例:LoadModule auth_basic_module modules/mod_auth_basic.so

5、MPM( Multi-Processing Module)多路處理模塊

prefork, worker, event

切換使用的MPM(centos6中不能)

/etc/httpd/conf.modules.d/00-mpm.conf

啓用要啓用的MPM相關的LoadModule指令即可

prefork的配置:  (默認使用)一個進程下面有若干子進程,由子進程提供服務,默認4個子進程,現有進程不夠用會自動開啓

vi /etc/httpd/conf.d/test.conf

StartServers 8     #初始子進程建議調大

MinSpareServers 5

MaxSpareServers 20

ServerLimit 256              最多進程數,最大值 20000  preforw模式下最大200000

MaxClients 256              最大的併發連接數,2.4官方文檔沒有說明,2.2中有,不加的話子進程數不會改變

MaxRequestsPerChild 4000     子進程最多能處理的請求數量。在處理MaxRequestsPerChild 個

請求之後,子進程將會被父進程終止,這時候子進程佔用的內存就會釋放(爲0時永遠不釋放)

worker的配置:    一個進程下面若干子進程,由子進程下面的線程提供服務,

ServerLimit 16

StartServers 2

MaxRequestWorkers 150

MinSpareThreads 25

MaxSpareThreads 75

ThreadsPerChild 25

event MPM單線程響應多請求,佔據更少的內存,高併發下表現更優秀,會有一個專門的線

程來管理keep-alive類型的線程

6、定義'Main' server的文檔頁面路徑

DocumentRoot “/path”

文檔路徑映射:

DocumentRoot指向的路徑爲URL路徑的起始位置

示例:

DocumentRoot "/data/html“     2.4版本只改這一行不行,需要授權,2.2可以直接修改

<Directory "/data/html">

Require all granted

</Directory>

文件是軟連接,在其他目錄也可以訪問

image.png

7、定義站點主頁面

DirectoryIndex index.html  index.php

8、站點訪問控制常見機制

可基於兩種機制指明對哪些資源進行何種訪問控制

訪問控制機制有兩種:客戶端來源地址,用戶賬號

文件系統路徑:

<Directory “/path">  限制文件夾

...

</Directory>

<File “/path/file”>    限制文件

...

</File>

<FileMatch "PATTERN">  支持通配符

...

</FileMatch>

<location /status>   #示例

<requireany>

require all denied

require ip 192.168.12.1 192.168.12.27

</requireany>

SetHandler server-status

</Location>

9、<Directory>中“基於源地址”實現訪問控制 可以加在上一步的<directory>中

(1) Options:後跟1個或多個以空白字符分隔的選項列表

在選項前的+,- 表示增加或刪除指定選項

常見選項:

Indexes:指明的URL路徑下不存在與定義的主頁面資源相符的資源文件時,返回索引列表給用戶

image.png

FollowSymLinks:允許訪問符號鏈接文件所指向的源文件

image.png

None:全部禁用

All: 全部允許

(2) AllowOverride

與訪問控制相關的哪些指令可以放在指定目錄下的.htaccess(由AccessFileName指定)文件中,覆蓋之前的配置指令

只對<directory>語句有效,可以將上面options的配置放在網站目錄下的.htaccess文件中

AllowOverride All: .htaccess中所有指令都有效 

AllowOverride None: .htaccess 文件無效

AllowOverride AuthConfig .htaccess 文件中,除了AuthConfig 其它指令都無法生效

(3) 基於IP的訪問控制:

無明確授權的目錄,默認拒絕

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

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

控制特定的IP訪問:

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

Require not ip IPADDR:拒絕特定的IP訪問

控制特定的主機訪問:

Require host HOSTNAME:授權特定主機訪問

Require not host HOSTNAME:拒絕

不能有失敗,至少有一個成功匹配才成功,即失敗優先

<RequireAll>

Require all granted

Require not ip 172.16.1.1 拒絕特定IP

</RequireAll>

多個語句有一個成功,則成功,即成功優先

<RequireAny>

Require all denied

require ip 172.16.1.1 允許特定IP

</RequireAny>

10、日誌設定

日誌類型:訪問日誌、錯誤日誌

錯誤日誌:

ErrorLog logs/error_log

LogLevel warn

LogLevel 可選值: debug, info, notice, warn,error, crit, alert, emerg

訪問日誌:

定義日誌格式:LogFormat format strings

LogFormat "%h %l %u %{%F %T}t \"%r\" %>s %b \"%{Referer}i\"

\"%{User-Agent}i\"" testlog

使用日誌格式:

CustomLog logs/access_log testlog

http://httpd.apache.org/docs/2.4/mod/mod_log_config.html#formats   官方幫助文檔

11、設定默認字符集

AddDefaultCharset UTF-8 此爲默認值

中文字符集:GBK, GB2312, GB18030

基於模塊mod_userdir.so實現

相關設置:

12、實現家目錄共享

vim /etc/httpd/conf.d/userdir.conf   修改該文件即可

<IfModule mod_userdir.c>

#UserDir disabled

UserDir public_html #指定共享目錄的名稱

</IfModule>

準備目錄

su – sun;mkdir ~/public_html

echo homesun > ~/sun/public_html/index.html

setfacl –m u:apache:x  ~sun

訪問


image.png

13、status頁面

LoadModule status_module modules/mod_status.so

<Location "/status">

SetHandler server-status

</Location>

ExtendedStatus On 顯示擴展信息


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章