Apache介紹及常用配置

Apache是世界使用排名第一的Web服務器軟件。它可以運行在幾乎所有廣泛使用的計算機平臺上,由于其跨平臺和安全性被廣泛使用,是最流行的Web服務器端軟件之一。

本節索引

一、Apache介紹

二、Apache常用設置

三、mod_deflate模塊——壓縮頁面優化傳輸

四、實現虛擬主機——單臺主機搭建多個網站

1.實驗:基于端口號的虛擬主機

2.實驗:基于IP地址的虛擬主機

3.實驗:基于主機頭的虛擬主機

封面

一、Apache介紹

Apache是世界使用排名第一的Web服務器軟件。它可以運行在幾乎所有廣泛使用的

計算機平臺上,由于其跨平臺和安全性被廣泛使用,是最流行的Web服務器端軟件

之一。它快速、可靠并且可通過簡單的API擴充,將Perl/Python等解釋器編譯到服

務器中。

官方網站:http://httpd.apache.org/

 

發展歷史:

20世紀90年代初,國家超級計算機應用中心NCSA開發

1995年開源社區發布apache(a patchy server)

ASF: apache software foundation

FSF:Free Software Foundation

 

特性:

1.高度模塊化:core+modules

2.動態加/卸載:DSO(Dynamic Shared Object)

3.多路處理模塊:MPM(multi-processing module)

 

 

功能特性:

基于IP、Port、FQDN的虛擬主機

CGI:Common Gateway Interface,通用網關接口

反向代理

負載均衡

路徑別名

豐富的用戶認證機制

??? basic

??? digest

支持第三方模塊

 

Httpd安裝及主要文件

版本:

CentOS 6: 2.2

CentOS 7:2.4

 

安裝方式:

rpm,yum:centos發行版,穩定,建議使用

編譯安裝:定制或特殊需求

 

CentOS 6程序環境:httpd-2.2

配置文件:

/etc/httpd/conf/httpd.conf

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

 

檢查配置語法:

httpd –t

service httpd configtest

 

服務腳本:/etc/rc.d/init.d/httpd

 

腳本配置文件:/etc/sysconfig/httpd

 

服務控制和啟動:

chkconfig httpd on|off

service {start|stop|restart|status|configtest|reload} httpd

 

站點網頁文檔根目錄:

/var/www/html

 

模塊文件路徑:

/etc/httpd/modules

/usr/lib64/httpd/modules

 

主程序文件:

/usr/sbin/httpd

/usr/sbin/httpd.worker

/usr/sbin/httpd.event

 

主進程文件:

/etc/httpd/run/httpd.pid

 

日志文件目錄:

/var/log/httpd

access_log: 訪問日志

error_log:錯誤日志

 

幫助文檔包:

httpd-manual

 

 

Apache是一個模塊化的程序,管理員可以選擇一些模塊來增加服務器的某些功能。這些模塊,可以在

創建服務器程序時靜態地編譯到httpd服務器的二進制代碼中,也可以編譯成一些獨立于服務器程序的

DynamicShared Objects (DSOs)文件

模塊索引官方文檔:http://httpd.apache.org/docs/2.4/mod/

 

查看靜態編譯的模塊

httpd -l

查看靜態編譯及動態裝載的模塊

httpd –M

動態模塊加載:不需重啟即生效

動態模塊路徑

/usr/lib64/httpd/modules/

 

下面來介紹一些Httpd使用中的常見設置

 

二、Apache常用設置

1服務器版本信息顯示格式

ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full

ServerTokens Prod[uctOnly] :Server: Apache

ServerTokens Major: Server: Apache/2

ServerTokens Minor: Server: Apache/2.0

ServerTokens Min[imal]: Server: Apache/2.0.41

ServerTokens OS: Server: Apache/2.0.41 (Unix)

ServerTokens Full (or not specified): Server: Apache/2.0.41 (Unix) PHP/4.2.2

MyMod/1.2

 

建議使用:ServerTokens Prod

示例:

當使用curl –I命令訪問一臺主機時,系統默認:

2

修改為:ServerToken Prod

3

 

2修改監聽的IP和Port

Listen [IP:]PORT

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

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

Listen 80

Listen 8080

示例:

Listen 192.168.1.100:8080

Lsten 80

注:當主配置文件/etc/httpd/conf/httpd.conf以及 /etc/httpd/conf.d目錄下同時有Listen指令時,將同時

生效

 

3持久連接

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

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

斷開條件:數量限制:100

時間限制:以秒為單位, httpd-2.4 支持毫秒級

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

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

設置: KeepAlive On|Off

KeepAliveTimeout 15

MaxKeepAliveRequests 100

測試: telnet WEB_SERVER_IP PORT

GET /URL HTTP/1.1

Host: WEB_SERVER_IP

 

4 MPM(Multi -Processing Modules)多路處理模塊

經過適當的配置,可以提高服務器的負載能力。

原理是通過增加服務進程數量使服務器可以同時處理更多用戶請求。

三種模式:prefork, worker, event(2.2為試驗階段)

httpd-2.2不支持同時編譯多個模塊,所以只能編譯時選定一個;rpm安裝

的包提供三個二進制程序文件,分別用于實現對不同MPM機制的支持

確認方法:

httpd –V

1

ps aux | grep httpd

默認為/usr/sbin/httpd, 即prefork模式

 

更換使用的httpd程序:

/etc/sysconfig/httpd

HTTPD=/usr/sbin/httpd.worker

重啟服務生效

pstree -p|grep httpd 查看進程和線程

Httpd 2.4 與之不同

以動態模塊方式提供

配置文件:/etc/httpd/conf.modules.d/00-mpm.conf

httpd –M |grep mpm

重啟服務生效

pstree -p|grep httpd 查看進程和線程

 

prefork:

多進程I/O模型,每個進程響應一個請求,默認模型

一個主進程:生成和回收n個子進程,創建套接字,不響應請求

多個子進程:工作work進程,每個子進程處理一個請求;系統初始時,預先

生成多個空閑進程,等待請求,最大不超過1024個

優點:成熟穩定,兼容所有新老模塊。同時,不需要擔心線程安全的問題。(我們常用的mod_php,PHP

的拓展不需要支持線程安全)

缺點:一個進程相對占用更多的系統資源,消耗更多的內存。而且,它并不擅長處理高并發請求,在這種

場景下,它會將請求放進隊列中,一直等到有可用進程,請求才會被處理。

prefork的默認配置:

<IfModule prefork.c>

StartServers 8 服務啟動時,預先同時開啟幾個進程

MinSpareServers 5

MaxSpareServers 20

ServerLimit 256 最多進程數,最大20000

MaxClients 256 最大并發

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

理MaxRequestsPerChild 個請求之后,子進程將會被父進程終止,這

時候子進程占用的內存就會釋放(為0時永遠不釋放)

</IfModule>

 

 

worker:

復用的多進程I/O模型,多進程多線程,IIS使用此模型

一個主進程:生成m個子進程,每個子進程負責生個n個線程,每個線程響應

一個請求,并發響應請求:m*n

優點:占據更少的內存,高并發下表現更優秀。

缺點:必須考慮線程安全的問題,因為多個子線程是共享父進程的內存地址的。

如果使用keep-alive的長連接方式,某個線程會一直被占據,也許中間幾乎沒

有請求,需要一直等待到超時才會被釋放。如果過多的線程,被這樣占據,也會

導致在高并發場景下的無服務線程可用。(該問題在prefork模式下,同樣會發生)

worker的默認配置:

<IfModule worker.c>

StartServers 4

MaxClients 300

MinSpareThreads 25

MaxSpareThreads 75

ThreadsPerChild 25

MaxRequestsPerChild 0 無限制

</IfModule>

 

event:

事件驅動模型(worker模型的變種)

一個主進程:生成m個子進程,每個進程直接響應n個請求,并發響應請求:

m*n,有專門的線程來管理這些keep-alive類型的線程,當有真實請求時,將請

求傳遞給服務線程,執行完畢后,又允許釋放。這樣增強了高并發場景下的請

求處理能力

httpd-2.2: event 測試版,centos6默認

httpd-2.4:event 穩定版,centos7默認

 

 

5.DSO: Dynamic Shared Object

加載動態模塊配置

/etc/httpd/conf/httpd.conf

配置指定實現模塊加載格式:

LoadModule <mod_name> <mod_path>

模塊文件路徑可使用相對路徑:

相對于ServerRoot(默認/etc/httpd)

示例:

LoadModule auth_basic_module

modules/mod_auth_basic.so

 

6更改httpd服務默認目錄

DocumentRoot ?“/path”

文檔路徑映射:

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

示例:

DocumentRoot “/app/data”

CentOS7必須給目錄授權才能使用:

<Directory “/app/data”>

??? Require all granted

</Directory>

 

http://HOST:PORT/test/index.html

–> /app/data/test/index.html

注意:SELinux和iptables的狀態

 

 

7定義站點未指定時的默認頁面

默認為testing頁面:

DirectoryIndex index.html index.html.var

 

 

8基于IP的訪問控制:

CentOS 6:

order和allow、deny

放在directory, .htaccess中

order:定義生效次序;寫在后面的表示默認法則

Order allow,deny

Order deny,allow

Allow from和Deny from:定義客戶端地址

客戶端地址:

IP

網絡: 172.16

172.16.0.0

172.16.0.0/16

172.16.0.0/255.255.0.0

 

CentOS 7:

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

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

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

控制特定的IP訪問:

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

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

控制特定的主機訪問:

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

Require not host HOSTNAME:拒絕

HOSTNAME:

FQDN:特定主機

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

 

 

9針對資源進行訪問控制

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

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

文件系統路徑:

針對目錄:

<Directory ?“/path”>

</Directory>

針對文件,支持通配符:

<File “/path/file”>

</File>

支持正則表達式:

<FileMatch “PATTERN”>

</FileMatch>

 

URL路徑:

<Location “”>

</Location>

<LocationMatch “”>

</LocationMatch>

 

示例:

<FilesMatch “\.(gif|jpe?g|png)$”>

<Files “?at.*”> 通配符

<Location /status>

<LocationMatch “/(extra|special)/data”>

 

10 <Directory>中“基于源地址”實現訪問控制

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

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

常見選項:

Indexes:指明的URL路徑下不存在與定義的主頁面資源相符的資源

文件時,返回索引列表給用戶

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

None:全部禁用

All: 全部允許

示例:

<Directory /web/docs>

Options Indexes FollowSymLinks

</Directory>

<Directory /web/docs/spec>

Options FollowSymLinks

</Directory>

<Directory /web/docs>

Options Indexes FollowSymLinks

</Directory>

<Directory /web/docs/spec>

Options +Includes -Indexes

</Directory>

 

(2) AllowOverride

與訪問控制相關的哪些指令可以放在指定目錄下的.htaccess(由AccessFileName

指定)文件中,覆蓋之前的配置指令

只對<directory>語句有效

AllowOverride All: 所有指令都有效

AllowOverride None:.htaccess 文件無效

AllowOverride AuthConfig Indexes 除了AuthConfig 和Indexes的其它指令都無法覆蓋

 

11日志設定

日志類型:

訪問日志

錯誤日志

錯誤日志:

ErrorLog logs/error_log

LogLevel warn?????

LogLevel 可選值:

debug, info, notice, warn,error,crit, alert, emerg ?????????????? 越靠后等級越高

 

訪問日志:

定義日志格式:LogFormat format strings

LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” combined

使用日志格式:

CustomLog logs/access_log combined

參考幫助:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats

%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”的值;即發出請求的應用程序

更多的格式選項請參考官方mod_log_config 文檔

 

示例:

默認日志中日期顯示為:[21/Jun/2018:17:00:54 +0800]

vim /etc/httpd/conf/httpd.conf

LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” combined找到此行

修改 %t ==> ?%{%F %T}t

再次打開access_log日志日期格式:2018-06-21 19:02:27

 

12設定默認字符集

AddDefaultCharset UTF-8

中文字符集:GBK, GB2312, GB18030

 

13定義路徑別名

格式: Alias /URL/ “/PATH/”

DocumentRoot “/www/htdocs”

http://www.magedu.com/download/bash.rpm

==>/www/htdocs/download/bash.rpm

Alias /download/ “/rpms/pub/”

http://www.magedu.com/download/bash.rpm

==>/rpms/pub/bash.rpm

http://www.magedu.com/images/logo.png

==>/www/htdocs/images/logo.png

注意:CentOS 7要給重新指定的路徑進行grant授權才可訪問

<directory “/rpm/pub”>

require all granted

</directory>

 

14基于用戶的訪問控制

認證質詢:WWW-Authenticate:響應碼為401,拒絕客戶端請求,并說明要求客戶

端提供賬號和密碼

認證:Authorization:客戶端用戶填入賬號和密碼后再次發送請求報文;認證通過時,

則服務器發送響應的資源

認證方式兩種:

basic:明文

digest:消息摘要認證,兼容性差

安全域:需要用戶認證后方能訪問的路徑;應該通過名稱對其進行標識,以便于告

知用戶認證的原因

用戶的賬號和密碼

虛擬賬號:僅用于訪問某服務時用到的認證標識

存儲:文本文件,SQL數據庫,ldap目錄存儲,nis等

 

basic認證配置示例:

(1) 定義安全域

<Directory “/path”>

Options None

AllowOverride None

AuthType Basic

AuthName “String“

AuthUserFile “/PATH/HTTPD_USER_PASSWD_FILE”

Require user username1 username2 …

</Directory>

允許賬號文件中的所有用戶登錄訪問:

Require valid-user

 

(2) 提供賬號和密碼存儲(文本文件)

使用專用命令完成此類文件的創建及用戶管理

htpasswd [options] /PATH/HTTPD_PASSWD_FILE username

-c:自動創建文件,僅應該在文件不存在時使用

-p:明文密碼

-d:CRYPT格式加密,默認

-m:md5格式加密

-s: ?sha格式加密

-D:刪除指定用戶

 

基于組賬號進行認證

(1) 定義安全域

<Directory “/path”>

AuthType Basic

AuthName “String“

AuthUserFile “/PATH/HTTPD_USER_PASSWD_FILE”

AuthGroupFile “/PATH/HTTPD_GROUP_FILE”

Require group grpname1 grpname2 …

</Directory>

(2) 創建用戶賬號和組賬號文件

組文件:每一行定義一個組

GRP_NAME: username1 username2 …

 

示例:

<Directory “/www/htdocs/admin”>

Options None

AllowOverride None

AuthType Basic

AuthName “Administator private”

AuthUserFile “/etc/httpd/conf.d/.htpasswd”

AuthGroupFile “/etc/httpd/conf.d/.htgroup”

Require group webadmins

</Directory>

vim /etc/httpd/conf.d/.htgroup

webadmins:wang mage

 

遠程客戶端和用戶驗證的控制

Satisfy ALL|Any

ALL 客戶機IP和用戶驗證都需要通過才可以

Any客戶機IP和用戶驗證,有一個滿足即可

示例:

Require valid-user

Order allow,deny

Allow from 192.168.1

Satisfy Any

 

15實現用戶家目錄的http共享

基于模塊mod_userdir.so實現

httpd -M |grep userdir

SELinux: http_enable_homedirs

相關設置:

vim /etc/httpd/conf.d/userdir.conf

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

準備目錄

su – wang;mkdir ~/public_html

setfacl –m u:apache:x ~wang

訪問

http://localhost/~wang/index.html

 

16、status頁面

功能:顯示系統中的狀態信息,了解服務器狀態,監控用

LoadModule status_module modules/mod_status.so

<Location /server-status>

SetHandler server-status

Require all granted

</Location>

ExtendedStatus On 顯示擴展信息

 

訪問:

http://IP:PORT/server-status ? ? 就可以監控apache服務了

下面就是該網頁所顯示的監控情況:

4

參數說明:

字段? ?? ?? ?? ?? ?? ?? ?? ? 說明

Server Version? ?? ? ?Apache 服務器的版本。

Server MPM?? ? ? ? ? MPM工作模式

Server Built ? ? ? ? ? ? Apache 服務器編譯安裝的時間。

Current Time? ?? ?? ? 目前的系統時間。

Restart Time? ?? ?? ?? Apache 重新啟動的時間。

Parent Server Generation? ?? ???Apache 父程序 (parent process) 的世代編號,就是 httpd 接收到 SIGHUP

而重新啟動的次數。

Server uptime?? ? ? ? Apache 啟動后到現在經過的時間。

Total accesses? ?? ?? ? 到目前為此 Apache 接收的聯機數量及傳輸的數據量。

CPU Usage ? ? ? ? ? ? ? 目前 CPU 的使用情形。

 

_SWSS….? ?? ?? ?? ?? 所有 Apache process 目前的狀態。每一個字符表示一個程序,最多可以顯示 256 個程序

的狀態。

Scoreboard Key? ?? ?? ?上述狀態的說明。以下為每一個字符符號所表示的意義:

* _:等待連結中。

* S:啟動中。

* R:正在讀取要求。

* W:正在送出回應。

* K:處于保持聯機的狀態。

* D:正在查找DNS。

* C:正在關閉連結。

* L:正在寫入記錄文件。

* G:進入正常結束程序中。

* I:處理閑置。

* .:尚無此程序。

 

Srv? ?? ? ? 本程序與其父程序的世代編號。

PID? ?? ???本程序的process id。

Acc? ? ? ? ?分別表示本次聯機、本程序所處理的存取次數。

M ? ? ? ? ? 該程序目前的狀態。

CPU?? ? ? 該程序所耗用的CPU資源。

SS?? ? ? ? ? 距離上次處理要求的時間。

Req?? ? ? ?最后一次處理要求所耗費的時間,以千分之一秒為單位。

Conn? ? ? 本次聯機所傳送的數據量。

Child? ?? ? 由該子程序所傳送的數據量。

Slot? ?? ???由該 Slot 所傳送的數據量。

Client? ?? ? 客戶端的地址。

VHost? ?? ? 屬于哪一個虛擬主機或本主機的IP。

Request? ???聯機所提出的要求信息。

 

三、mod_deflate模塊——壓縮頁面優化傳輸

mod_deflate

功能:壓縮頁面優化傳輸速度

官方文檔:http://httpd.apache.org/docs/2.4/mod/mod_deflate.html

適用場景:

(1) 節約帶寬,額外消耗CPU;同時,可能有些較老瀏覽器不支持

(2) 壓縮適于壓縮的資源,例如文本文件

LoadModule deflate_module modules/mod_deflate.so SetOutputFilter DEFLATE

# 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)???????????????? ? 壓縮比(1-9)

DeflateCompressionLevel 9

排除特定舊版本的瀏覽器,不支持壓縮

Netscape 4.x 只壓縮text/html

BrowserMatch ^Mozilla/4 gzip-only-text/html

Netscape 4.06-08三個版本 不壓縮

BrowserMatch ^Mozilla/4\.0[678] no-gzip

Internet Explorer標識本身為“Mozilla / 4”,但實際上是能夠處理請求的壓縮。

如果用戶代理首部匹配字符串“MSIE”(“B”為單詞邊界”),就關閉之前定

義的限制

BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

 

查看網站是否壓縮

方法一:利用curl命令

Curl -I -v –compressed ?http://www.www58058.com

方法二:站長工具查詢

http://tool.chinaz.com/Gzips/

壓縮查詢

 

示例:

查看mod_deflate.so模塊是否已加載

1

修改配置文件

2

重啟httpd服務即可

systemctl restart httpd

 

 

四、實現虛擬主機——單臺主機搭建多個網站

前期準備:

虛擬機一臺,操作系統版本為CentOS 7.4,IP地址:192.168.30.10

 

1實驗:基于端口號的虛擬主機

實驗預期:

搭建三個網站,網站與監聽端口對應關系如下:

www.a.com????????? Listen 81

www.b.com????????? Listen 82

www.c.com????????? Listen 83

具體步驟:

創建網站目錄

mkdir /data/website{1,2,3} -pv

echo www.a.com > /data/website1/index.html

echo www.b.com > /data/website2/index.html

echo www.c.com > /data/website3/index.html

1

編寫配置文件

vim /etc/httpd/conf.d/test2.conf

Listen 81

listen 82

listen 83

<directory “/data/”>

require all granted

</directory>

<VirtualHost *:81>

? DocumentRoot “/data/website1”

? ServerName www.a.com

? Errorlog “logs/a.com.error_log”

? Transferlog “logs/a.con-access_log”

</VirtualHost>

<VirtualHost *:82>

? DocumentRoot “/data/website2”

? ServerName www.b.com

? Errorlog “logs/b.com.error_log”

? Transferlog “logs/b.con-access_log”

</VirtualHost>

<VirtualHost *:83>

? DocumentRoot “/data/website3”

? ServerName www.c.com

? Errorlog “logs/c.com.error_log”

? Transferlog “logs/c.con-access_log”

</VirtualHost>

2

重啟httpd服務

systemctl restart httpd

檢查端口是否監聽狀態

ss -ntl

3

瀏覽器分別打開IP:port測試網頁能否正常顯示

4

 

 

2實驗:基于IP地址的虛擬主機

實驗預期

搭建三個網站,網站與IP地址對應關系如下:

www.a.com ?????????192.168.30.11

www.b.com????????? 192.168.30.22

www.c.com??? ??????192.168.30.33

 

添加IP地址

ip addr add 192.168.30.11/24 dev ens33

ip addr add 192.168.30.22/24 dev ens33

ip addr add 192.168.30.33/24 dev ens33

1

修改配置文件

vim /etc/httpd/conf.d/test.conf

<directory “/data/”>

require all granted

</directory>

<VirtualHost 192.168.30.11:80>

? DocumentRoot “/data/website1”

? ServerName www.a.com

? Errorlog “logs/a.com.error_log”

? Transferlog “logs/a.con-access_log”

</VirtualHost>

<VirtualHost 192.168.30.22:80>

? DocumentRoot “/data/website2”

? ServerName www.b.com

? Errorlog “logs/b.com.error_log”

? Transferlog “logs/b.con-access_log”

</VirtualHost>

<VirtualHost 192.168.30.33:80>

? DocumentRoot “/data/website3”

? ServerName www.c.com

? Errorlog “logs/c.com.error_log”

? Transferlog “logs/c.con-access_log”

</VirtualHost>

2

重啟httpd服務

systemctl restart httpd

打開瀏覽器分別測試

3

 

3實驗:基于主機頭的虛擬主機

實驗預期:

通過主機頭可直接訪問到網站頁面,也是實際應用中最常見的虛擬主機搭建方式

具體步驟:

修改配置文件

vim /etc/httpd/conf.d/test.conf

<directory “/data/”>

require all granted

</directory>

<VirtualHost *:80>

?DocumentRoot “/data/website1”

? ServerName www.a.com

? Errorlog “logs/a.com.error_log”

? Transferlog “logs/a.con-access_log”

</VirtualHost>

<VirtualHost *:80>

? DocumentRoot “/data/website2”

? ServerName www.b.com

? Errorlog “logs/b.com.error_log”

? Transferlog “logs/b.con-access_log”

</VirtualHost>

<VirtualHost *:80>

? DocumentRoot “/data/website3”

? ServerName www.c.com

? Errorlog “logs/c.com.error_log”

? Transferlog “logs/c.con-access_log”

</VirtualHost>

1

配置DNS解析,為了方便模擬,我們就在/etc/hosts文件中配置解析

2

重啟httpd服務

systemctl restart httpd

打開瀏覽器分別訪問www.a.com,www.b.com,www.c.com,訪問成功

3

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/101326

(0)
wangxczwangxcz
上一篇 2018-06-21 16:44
下一篇 2018-06-21 20:51

相關推薦

欧美性久久久久