本節索引
一、Apache介紹
二、Apache常用設置
三、mod_deflate模塊——壓縮頁面優化傳輸
四、實現虛擬主機——單臺主機搭建多個網站
1.實驗:基于端口號的虛擬主機
2.實驗:基于IP地址的虛擬主機
3.實驗:基于主機頭的虛擬主機
一、Apache介紹
Apache是世界使用排名第一的Web服務器軟件。它可以運行在幾乎所有廣泛使用的
計算機平臺上,由于其跨平臺和安全性被廣泛使用,是最流行的Web服務器端軟件
之一。它快速、可靠并且可通過簡單的API擴充,將Perl/Python等解釋器編譯到服
務器中。
發展歷史:
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命令訪問一臺主機時,系統默認:
修改為:ServerToken Prod
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
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服務了
下面就是該網頁所顯示的監控情況:
參數說明:
字段? ?? ?? ?? ?? ?? ?? ?? ? 說明
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
方法二:站長工具查詢
示例:
查看mod_deflate.so模塊是否已加載
修改配置文件
重啟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
編寫配置文件
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>
重啟httpd服務
systemctl restart httpd
檢查端口是否監聽狀態
ss -ntl
瀏覽器分別打開IP:port測試網頁能否正常顯示
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
修改配置文件
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>
重啟httpd服務
systemctl restart httpd
打開瀏覽器分別測試
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>
配置DNS解析,為了方便模擬,我們就在/etc/hosts文件中配置解析
重啟httpd服務
systemctl restart httpd
打開瀏覽器分別訪問www.a.com,www.b.com,www.c.com,訪問成功
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/101326