apache虛擬主機(jī)配置
時間:2023-07-15 23:57:01 | 來源:網(wǎng)站運(yùn)營
時間:2023-07-15 23:57:01 來源:網(wǎng)站運(yùn)營
apache虛擬主機(jī)配置:apache2.4的最終配置效果:
httpd.confListen 19010# Virtual hostsInclude conf/extra/httpd-vhosts.conf
httpd-vhosts.conf# IP:Port,以端口號配置虛擬機(jī)<VirtualHost 127.0.0.1:19010> # 網(wǎng)站錯誤時提示的聯(lián)系管理員郵箱(可不配置) ServerAdmin webmaster@dummy-host.example.com # 虛擬主機(jī)根目錄 DocumentRoot "${SRVROOT}" # 服務(wù)器名稱(可不配置) ServerName dummy-host.example.com # 服務(wù)器別名(可不配置) ServerAlias www.dummy-host.example.com # 錯誤日志 ErrorLog "logs/dummy-host.example.com-error.log" # 訪問日志 CustomLog "logs/dummy-host.example.com-access.log" common # 訪問目錄的配置,可以是其的一個子文件夾 <Directory "${SRVROOT}/public"> # 控制特定目錄將啟用哪些服務(wù)器特性 Options FollowSymLinks # 指明Apache服務(wù)器是否去找.htacess文件作為配置文件 AllowOverride All # 控制請求是否可以訪問 Require all granted </Directory></VirtualHost>
部分參數(shù)詳細(xì)說明:
Options FollowSymLinksOptions指令是Apache配置文件中一個比較常見也比較重要的指令,Options指令可以在Apache服務(wù)器核心配置(server config)、虛擬主機(jī)配置(virtual host)、特定目錄配置(directory)以及.htaccess文件中使用。
Options指令的主要作用是控制特定目錄將啟用哪些服務(wù)器特性。
All
表示除 `MultiViews`之外的所有特性。這也是Options指令的默認(rèn)設(shè)置。
None
表示不啟用任何的服務(wù)器特性。
FollowSymLinks
服務(wù)器允許在此目錄中使用符號連接。如果該配置選項(xiàng)位于 `<Location>`配置段中,將會被忽略。
Indexes
如果輸入的網(wǎng)址對應(yīng)服務(wù)器上的一個文件目錄,而此目錄中又沒有 `DirectoryIndex`指令(例如: `DirectoryIndex index.html index.php`),那么服務(wù)器會返回由 `mod_autoindex`模塊生成的一個格式化后的目錄列表,并列出該目錄下的所有文件。
MultiViews
允許使用 `mod_negotiation`模塊提供內(nèi)容協(xié)商的"多重視圖"。
SymLinksIfOwnerMatch
服務(wù)器僅在符號連接與目標(biāo)文件或目錄的所有者具有相同的用戶ID時才使用它。
ExecCGI
允許使用 `mod_cgi`模塊執(zhí)行CGI腳本。
Includes
允許使用 `mod_include`模塊提供的服務(wù)器端包含功能。
IncludesNOEXEC
允許服務(wù)器端包含,但禁用"#exec cmd"和"#exec cgi"。但仍可以從 `ScriptAlias`目錄使用"#include virtual"虛擬CGI腳本。
AllowOverride AllAllowOverride參數(shù)就是指明Apache服務(wù)器是否去找.htacess文件作為配置文件,如果設(shè)置為none,那么服務(wù)器將忽略.htacess文件,如果設(shè)置為All,那么所有在.htaccess文件里有的指令都將被重寫。對于AllowOverride,還可以對它指定如下一些能被重寫的指令類型。
從安全性考慮,根目錄的AllowOverride屬性一般都配置成不允許任何Override 。
None
網(wǎng)站 .htaccess 文件將被完全忽略。
All
所有具有 .htaccess 作用域的指令都允許出現(xiàn)在 .htaccess 文件中。
AuthConfig
允許使用與認(rèn)證授權(quán)相關(guān)的指令(AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require, 等)。
FileInfo
允許使用控制文檔類型的指令(DefaultType, ErrorDocument, ForceType, LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter, mod/_mime中的 Add/* 和 Remove/* 指令等等)、控制文檔元數(shù)據(jù)的指令(Header, RequestHeader, SetEnvIf, SetEnvIfNoCase, BrowserMatch, CookieExpires, CookieDomain, CookieStyle, CookieTracking, CookieName)、mod/_rewrite中的指令(RewriteEngine, RewriteOptions, RewriteBase, RewriteCond, RewriteRule)和mod/_actions中的Action指令。
Indexes
允許使用控制目錄索引的指令(AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, 等)。
Limit
允許使用控制主機(jī)訪問的指令(Allow, Deny, Order)。 一般 Apache 新安裝 AllowOverride 默認(rèn)為「None」。
一般都盡可能避免使用.htaccess文件,任何希望放在.htaccess文件中的配置,都可放在主配置的<Directory>段中。避免使用的原因主要有:
性能問題
如果AllowOverride啟用.htaccess文件,則Apache會在每個目錄中查找.htaccess文件,因此啟用.htaccess都會導(dǎo)致性能的下降。
另外,對每一個請求,都需要讀取一次.htaccess文件。
還有,Apache必須在所有上級的目錄中查找.htaccess文件,以使所有有效的指令都起作用(參見指令的生效)
安全問題
允許用戶自己修改apache的配置,可能會導(dǎo)致某些意想不到的修改,如果給予用戶較少的特權(quán)而不能滿足其需要,則會帶來額外的技術(shù)支持請求,所以必須明確地告訴用戶已經(jīng)給予他們的權(quán)限,說明AllowOverride設(shè)置的值,并引導(dǎo)他們參閱相應(yīng)的說明,以免日后生出許多麻煩。
Require all granted在Apache2.2版本中,訪問控制是基于客戶端的主機(jī)名、IP地址以及客戶端請求中的其他特征,使用Order(排序), Allow(允許), Deny(拒絕),Satisfy(滿足)指令來實(shí)現(xiàn)。
在Apache2.4版本中,使用mod_authz_host這個新的模塊,來實(shí)現(xiàn)訪問控制,其他授權(quán)檢查也以同樣的方式來完成。舊的訪問控制語句應(yīng)當(dāng)被新的授權(quán)認(rèn)證機(jī)制所取代,即便Apache已經(jīng)提供了mod_access_compat這一新模塊來兼容舊語句。
用新方法取代舊語句實(shí)現(xiàn)相同的訪問控制示例:
1.所有請求都被拒絕
Apache2.2 配置:
Order deny,allow #排序,先拒絕后允許
Deny from all #拒絕所有
Apache2.4 配置:
Require all denied #拒絕所有
2.所有請求都被允許
Apache2.2 配置:
Order allow,deny #排序,先允許后拒絕
Allow from all #允許所有
Apache2.4 配置:
Require all granted #允許所有
http://3.example.com所有請求都被允許,其他拒絕
Apache2.2 配置:
Order Deny,Allow #排序,先拒絕后允許
Deny from all #拒絕所有
Allow from Example Domain #允許example.com
Apache2.4 配置:
Require host Example Domain #允許example.com
附:常見訪問控制指令
Require all granted #允許所有來源訪問
Require all denied #拒絕所有來源訪問
Require expr expression #允許表達(dá)式為true時訪問
Require ip 10 172.1 192.168.2 #允許特定IP段訪問,多個段之前用空格隔開,每個段使用開頭幾項(xiàng)表示
Require host Example Domain #只允許來自域名example.com的主機(jī)訪問