linux系统web站点设置-http基础设置
一、httpd2.2的組成:
????/etc/httpd:服務(wù)器的根目錄
????????conf/httpd.conf,conf.d/*:配置文件
????????conf/magic:MIME的配置文件
????????logs:日志文件的存放路徑,符號(hào)鏈接/var/log/httpd
????????modules:動(dòng)態(tài)模塊文件的存放路徑,符號(hào)鏈接/usr/lib64/httpd/modules
????????run:httpd主進(jìn)程pid的存放路徑,符號(hào)鏈接/usr/run/httpd
?
????httpd的主配置文件:/etc/httpd/conf/httpd.conf
????????在此配置文件中,所有的配置項(xiàng)均被稱(chēng)為指令(Directive)
????????????指令的格式:Directive Value
????
????在主配置文件中,所有的指令都被分組到三個(gè)配置段中: ? ?????
????????### Section 1: Global Environment
????????### Section 2: 'Main' server configuration
????????### Section 3: Virtual Hosts
?
二、常用的配置指令:
????Section 1: Global Environment:全局配置段
????1.Listen Directive
????? ? 定義服務(wù)器監(jiān)聽(tīng)的有效套接字
????????格式:Listen [IPADDR:]port [protocol]
????????????注意:
????????????????1.在各配置文件中,Listen指令可以出現(xiàn)多次,用于定義不同的監(jiān)聽(tīng)套接字
????????????????2.Listen指令不能省略,否則服務(wù)器無(wú)法啟動(dòng)
????????????????3.如果省略IP地址,將會(huì)監(jiān)聽(tīng)當(dāng)前服務(wù)器所有被正確配置并生效的IP地址
????????????????4.在httpd2.2中,如果更改Listen中IP地址信息,則必須重啟httpd進(jìn)程才能生效,僅僅reload不能生效
?
????2.KeepAlive Directive
????????開(kāi)啟或關(guān)閉HTTP協(xié)議的長(zhǎng)鏈接功能
????????格式:KeepAlive On|Off
?
????????KeepAliveTimeout Directive????
????????服務(wù)器在一個(gè)長(zhǎng)鏈接上能夠達(dá)到的子回話(huà)請(qǐng)求的最大時(shí)間間隔;默認(rèn)的時(shí)間單位為秒
????????格式:KeepAliveTimeout number
?
????????MaxKeepAliveRequests Directive
????????一個(gè)長(zhǎng)鏈接上所能夠接受的最大的用戶(hù)請(qǐng)求數(shù)量,默認(rèn)是100個(gè)
????????格式:MaxKeepAliveRequests number
????????
????????以上三條指令是與長(zhǎng)鏈接相關(guān)的指令,長(zhǎng)鏈接的斷開(kāi)條件:
????????????時(shí)間限制、請(qǐng)求數(shù)量限制
?
? ? ? ? 使用Telnet測(cè)試長(zhǎng)鏈接:?
????????????設(shè)置KeepAlive On?,重載httpd服務(wù),默認(rèn)?KeepAliveTimeout的值為15
????????????
?
????3.MPM相關(guān)指令:
????????MPM:多道處理模塊;
????????httpd-2.2的MPM不支持DSO機(jī)制,且event為測(cè)試模式 ? ? ?????????
????/usr/sbin/httpd
????/usr/sbin/httpd.event
????/usr/sbin/httpd.worker
?
????????通過(guò)修改/etc/sysconfig/httpd文件來(lái)完成MPM功能切換;
????HTTPD=/usr/sbin/httpd.worker
????? ? 每次更換MPM模塊,都需要重啟httpd服務(wù)后才能生效,/etc/sysconfig/httpd是服務(wù)啟動(dòng)腳本/etc/init.d/httpd的配置文件;
????????????查看httpd或httpd.worker程序的模塊列表:
????????httpd -M
????????httpd.worker -M
?
????????????查看httpd或httpd.worker程序的靜態(tài)編譯模塊列表
????????????????httpd -l
????????????????httpd.worker -l
????????
????????與prefoik模塊相關(guān)的配置指令: ? ??
????????????<IfModule prefork.c>
????????????StartServers ? ? ? 8
????????????????//在服務(wù)主進(jìn)程啟動(dòng)之后,預(yù)先f(wàn)ork多少子進(jìn)程
????????????MinSpareServers ? ?5
????????????????//最少預(yù)留的空閑子進(jìn)程的數(shù)量
????????????MaxSpareServers ? 20
????????????????//最多預(yù)留的空閑子進(jìn)程的數(shù)量
????????????ServerLimit ? ? ?256
????????????????//為MaxClient指令定義上限
????????????MaxClients ? ? ? 256
????????????????//最多的客戶(hù)端并發(fā)訪(fǎng)問(wèn)量
????????????MaxRequestsPerChild ?4000
????????????????//每個(gè)子進(jìn)程能夠處理的客戶(hù)端請(qǐng)求的最大值
????????????</IfModule>
?
????????與worker模塊相關(guān)的配置指令 ? ????????
????????????<IfModule worker.c>
????????????StartServers ? ? ? ? 4
????????????????//在服務(wù)主進(jìn)程啟動(dòng)之后,預(yù)先f(wàn)ork多少個(gè)子進(jìn)程;
????????????MaxClients ? ? ? ? 300
????????????????//最多的客戶(hù)端并發(fā)訪(fǎng)問(wèn)量
????????????MinSpareThreads ? ? 25
????????????????//最少預(yù)留的空閑線(xiàn)程的數(shù)量
????????????MaxSpareThreads ? ? 75
????????????????//最多預(yù)留的空閑線(xiàn)程的數(shù)量
????????????ThreadsPerChild ? ? 25
? ? ? ? ? ? ? ? //每個(gè)子進(jìn)程可以管理的線(xiàn)程數(shù)量
????????????MaxRequestsPerChild ?0
????????????????//每個(gè)子進(jìn)程可以處理的客戶(hù)端請(qǐng)求的最大值
????????????</IfModule>
????
????4.DSO機(jī)制:
????????鏈接動(dòng)態(tài)模塊并將其添加至活動(dòng)模塊列表
????????格式:LoadModule module filename
????????例:
????????????LoadModule auth_basic_module modules/mod_auth_basic.so
????????modules是相對(duì)于ServerRoot指令定義的根目錄的路徑而言的
?
????5.Include Directive
????????可以包括除了主配置文件之外的其他服務(wù)配置文件;支持Globbing
????????格式:Include file-path | directory-path | wildcard
????????示例:
????????????Inlude conf.d/*.conf
?
????6.User Directive
????????指定啟動(dòng)子進(jìn)程的用戶(hù)ID和組ID
????????格式:User User-Id
? ? ? ? ? ? Group Group-Id
?
????Section 2:?'Main' server configuration,定義了默認(rèn)的web站點(diǎn)的基本屬性
? ? 7.ServerAdmin Directive
????????定義了發(fā)送錯(cuò)誤信息的郵箱地址;
????????格式:ServerAdmin email-address|URL
?
????????ServerName Directive
????????服務(wù)器做自我標(biāo)識(shí)時(shí)使用的主機(jī)名和端口號(hào)的組合;
????????格式:ServerName [scheme://]domain-name|ip-address[:port]
?
????????DocumentRoot Directive
????????為web站點(diǎn)的資源提供路徑映射;
????????格式:DocumentRoot directory-path
????????示例:
????????????DocumentRoot "/var/www/html"
?
????8.站點(diǎn)資源訪(fǎng)問(wèn)控制資源指令
????????1)基于文件系統(tǒng)的訪(fǎng)問(wèn)控制指令 ??
????????????a.基于指定目錄的訪(fǎng)問(wèn)控制指令?????????
????????????????<Directory "/PATH/TO/SOME_DIR">
???? ????Options Directive
???? ????AllowOverride Directive
???? ????Order Directive
???? ????Allow Directive
???? ????Deny Directive
???? ????????</Directory>
?
????????????b.基于特定文件的訪(fǎng)問(wèn)控制指令 ? ?????????
????????????????<File "FILENAME">
????Directive Value
????????????????</File>
?
????????????c.基于模式匹配的方式進(jìn)行訪(fǎng)問(wèn)控制的指令 ????????????
????????????????<FilesMatch regex>
????Directive Value
????????????????</FilesMatch>
?
????????????????<DirectoryMatch regex>
????Directive Value
????????????????</DirectoryMatch>
?
????????2)基于URL的訪(fǎng)問(wèn)控制指令
? ? ? ? ? ? a.基于URL進(jìn)行訪(fǎng)問(wèn)控制:
????????????????<Location URL-path|URL>
????Directive Value
????????????????</Location>
?
????b.基于URL的模式匹配的方式進(jìn)行訪(fǎng)問(wèn)控制:
????????????????<LocationMatch regex>
????Directive Value
????????????????</LocationMatch>
? ? ? ??
????????3)指令具體內(nèi)容
????????????①Options Directive
????????????????指定的目錄中激活web訪(fǎng)問(wèn)控制相關(guān)特性;
????????????????格式:Options [+|-]option [[+|-]option] ...
????????????????取值可以是:None, All, Indexes, Includes, FollowSymLinks, SymLinksifOwnerMatch, ExecCGI, MultiViews...
????Indexes:啟用DocumentRoot的索引特性;當(dāng)web站點(diǎn)沒(méi)有定義符合要求的主頁(yè)或者主頁(yè)不存在時(shí),在瀏覽器上允許以索引的方式列表顯示整個(gè)DocumentRoot中所有的資源給用戶(hù)選擇;一般用于資源下載站點(diǎn);對(duì)于正常的web站點(diǎn)來(lái)說(shuō),應(yīng)禁用此功能;
????FollowSymLinks:跟蹤符號(hào)鏈接并找到被鏈接的文件,并可以在客戶(hù)端瀏覽器中打開(kāi);
????SymLinksifOwnerMatch:只有處理客戶(hù)端請(qǐng)求的子進(jìn)程的所有者與符號(hào)鏈接文件的所有者為同一用戶(hù)時(shí),才跟蹤符號(hào)鏈接;
????
????????????②AllowOverride Directive
????????????????控制被允許放置于.htaccess文件中的指令是否生效;
????????????????格式:AllowOverride All|None|directive-type [directive-type]
????????????????httpd允許在web站點(diǎn)的文檔根目錄中以及各級(jí)子目錄中使用.htaccess文件進(jìn)行資源的訪(fǎng)問(wèn)控制;凡是放置于.htaccess文件中的指令,有繼承的特性;如果每次執(zhí)行指令都要讀取該文件進(jìn)行比對(duì),則運(yùn)行效率會(huì)下降,所以通常建議該指令的值設(shè)置為"None";
?
????③Order Directive
????????????????定義基于IP地址的訪(fǎng)問(wèn)控制管理的順序;
????????????????a.配置順序:
????根據(jù)指定的Allow和Deny的順序來(lái)執(zhí)行;
????????????????b.范圍順序:
????匹配范圍越小的,越優(yōu)先執(zhí)行;
????????????????格式:Order ordering
????ordering可以包含兩種通用順序:
????????????????????Allow, Deny:
????????????????????????????先計(jì)算Allow指令的匹配,如果能夠匹配任意規(guī)則,則允許;
????????????????????????????再計(jì)算Deny指令的匹配,如果能夠匹配任意規(guī)則,則阻止;
????????????????????????????如果沒(méi)有匹配,則默認(rèn)阻止所有;
????????????????????Deny, Allow:
????先計(jì)算Deny指令的匹配,如果能夠匹配任意規(guī)則,則阻止;
????再計(jì)算Allow指令的匹配,如果能夠匹配任意規(guī)則,則允許;
????如果沒(méi)有匹配,則默認(rèn)允許所有;
?
????④Deny Directive
????????????????控制阻止訪(fǎng)問(wèn)服務(wù)器的客戶(hù)端主機(jī);
????????????????格式:Deny from all|host|env=[!]env-variable [host|env=[!]env-variable] ...
?
????? Allow Directive
????????????????控制允許訪(fǎng)問(wèn)服務(wù)器的客戶(hù)端主機(jī);
????????????????格式:Allow from all|host|env=[!]env-variable [host|env=[!]env-variable] ...
????host可以寫(xiě)成:
????????????????????????域名或FQDN:example.net www.abc.com
????????????????????????單個(gè)IP:172.16.0.1
????????????????????????邏輯網(wǎng)段:172.16 172.16.0.0/16 172.16.0.0/255.255.0.0
?
????示例:
????????Order allow,deny
????????????????????????Allow from all
????????????????????????????//允許所有客戶(hù)端主機(jī)訪(fǎng)問(wèn)當(dāng)前服務(wù)器的web站點(diǎn)服務(wù);
?
????????????????????????Order deny,allow
????????????????????????Deny from 172.16.0.1
????//僅阻止IP地址為172.16.0.1的主機(jī)訪(fǎng)問(wèn)當(dāng)我服務(wù)器的web站點(diǎn)服務(wù);
????????
????9.DirectoryIndex Directive
????????為當(dāng)前web站點(diǎn)指定默認(rèn)的主頁(yè)文件名稱(chēng);
????????格式:DirectoryIndex disabled | local-url [local-url] ...
?
????????注意:
????1) DirectoryIndex指令之后可以設(shè)置多個(gè)本地URL作為主頁(yè)文件名稱(chēng);按照順序從前到后進(jìn)行名稱(chēng)匹配,如果能夠匹配成功,就將該資源當(dāng)作本站點(diǎn)的主頁(yè)文檔;如果沒(méi)有匹配成功,且Options指令中也沒(méi)有定義Indexes特性,則web服務(wù)器阻止本次請(qǐng)求;
????2) 如果請(qǐng)求資源時(shí)明確的給出URL,則DirectoryIndex指令的值無(wú)任何意義;
????
????10.日志相關(guān)指令
????????ErrorLog Directive
????標(biāo)明錯(cuò)誤信息的日志記錄的位置(文件路徑)
????????格式:ErrorLog file-path|syslog[:[facility][:tag]]
?
????????示例:
????ErrorLog logs/error_log
?
????????LogLevel Directive
????????????控制錯(cuò)誤日志記錄的詳細(xì)程度;
????????????格式:LogLevel [module:]level [module:level] ...
????level包括:emerg、alert、crit、error、warn、notice、info、debug
?
????注意:
????????1) 日志記錄等級(jí)越高,在錯(cuò)誤日志中記錄的信息就會(huì)越少;
????????2) 選擇的日志記錄等級(jí),有向上兼容的特性;
?
????????CustomLog Directive
????標(biāo)明記錄訪(fǎng)問(wèn)日志的文件的路徑及日志記錄的格式;
????????????格式:CustomLog file format
?
????????示例:
????CustomLog logs/access_log combined
?????
????????LogFormat Directive
????功能:描述了在訪(fǎng)問(wèn)日志中記錄信息的特定格式;
????格式:LogFormat format|nickname [nickname]
????????????????常用的format:
????%h:遠(yuǎn)程主機(jī)名稱(chēng);如果HostnameLookups的值設(shè)置為Off,則記錄遠(yuǎn)程主機(jī)的IP地址;
????%l:遠(yuǎn)程登錄名稱(chēng);如果沒(méi)有登錄名,就在日志中記錄為"-";
????%u:遠(yuǎn)程用戶(hù)名稱(chēng);記錄通過(guò)身份驗(yàn)證之后訪(fǎng)問(wèn)資源的用戶(hù)名稱(chēng);
????%t:收到客戶(hù)端請(qǐng)求的時(shí)候的服務(wù)器的時(shí)間戳;[18/Sep/2011:19:18:28 -0400]
????\"%r\":請(qǐng)求報(bào)文首部的首行;
????????????????????????"GET /index.html HTTP/1.1"
????%>s:請(qǐng)求報(bào)文的狀態(tài)信息;
????%b:以字節(jié)為單位的響應(yīng)報(bào)文的長(zhǎng)度;
????\"%{Referer}i\":訪(fǎng)問(wèn)此頁(yè)面之前通過(guò)哪個(gè)超鏈接跳轉(zhuǎn)而來(lái);使用"{}"引用的內(nèi)容是報(bào)文首部中的首部名稱(chēng);
????\"%{User-Agent}i\":客戶(hù)端使用的http應(yīng)用程序及相關(guān)信息;
?
????????????????示例:
????LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined ? ????????????
????????????????????LogFormat "%h %l %u %t \"%r\" %>s %b" common
????????????????????LogFormat "%{Referer}i -> %U" referer
????????????????????LogFormat "%{User-agent}i" agent
?
? ? ? ? ? ? ? ? 四種格式,默認(rèn)選擇combined
????????????????????CustomLog logs/access_log combined
?
????11.定義路徑別名的指令:
????????Alias Directive
????????????將指定的URL映射至本地的文件系統(tǒng)路徑;
????????????格式:Alias URL-path file-path|directory-path
????????示例:????
????????????Alias /icons/ "/var/www/icons/"
????????????<Directory "/var/www/icons">
? ????????????? Options Indexes MultiViews FollowSymLinks
? ? ????????????AllowOverride None
? ? ????????????Order allow,deny
? ????????????? Allow from all
????????????</Directory>
?
????????AliasMatch Directive
????????????使用正則表達(dá)式將URL映射至本地的文件系統(tǒng)路徑;
????????????格式:AliasMatch regex file-path|directory-path
????????示例:
????AliasMatch ^/exam(.*)?$ "/tmp/exam$1"
????<Directory "/tmp/exam/">
????????????????Options None
????????????????AllowOverride None
????????????????Order allow,deny
????????????????Allow from all
????</Directory>
?
????12.服務(wù)器系統(tǒng)狀態(tài)數(shù)據(jù)查詢(xún):
????????前提:LoadModule status_module modules/mod_status.so
????????<Location /server-status>
????SetHandler server-status
????Order deny,allow
????Deny from all
????Allow from 172.16
????????</Location>
?
????????ExtendedStatus On|Off:開(kāi)啟或關(guān)閉更多的額外狀態(tài)信息展示;
?
三、虛擬主機(jī)配置段:
????### Section 3: Virtual Hosts
????<VirtualHost> Directive
????啟動(dòng)并配置虛擬主機(jī)及相關(guān)參數(shù);
????????格式:
????<VirtualHost addr[:port] [addr[:port]] ...>
????????????????Directive Value
????</VirtualHost>
?
????使用虛擬主機(jī):默認(rèn)一個(gè)httpd僅能構(gòu)建一個(gè)web站點(diǎn),因此很多的情況下,我們需要在同一臺(tái)服務(wù)器上架構(gòu)多個(gè)web站點(diǎn),此時(shí)則需要使用虛擬主機(jī)來(lái)定義。如果啟用了虛擬主機(jī),每個(gè)獨(dú)立的Web站點(diǎn)都必須要有至少一個(gè)獨(dú)立的主機(jī)標(biāo)識(shí):
????IP地址 + Port + 主機(jī)頭(請(qǐng)求報(bào)文首部中的Host首部的值,通常為FQDN)
?
????三種典型的虛擬主機(jī)實(shí)現(xiàn)方式:
????????1) 基于IP地址構(gòu)建的虛擬主機(jī);
????????2) 基于Port構(gòu)建的虛擬主機(jī);
????????3) 基于主機(jī)頭構(gòu)建的虛擬主機(jī);
????????注意:Main Server和Virtual Host不能同時(shí)被定義;而且一旦虛擬主機(jī)配置被激活,Main Server就不再有效;
?
????常用指令:
????NameVirtualHost Directive
????????功能:在使用基于主機(jī)頭構(gòu)建虛擬主機(jī)時(shí),指定虛擬主機(jī)名稱(chēng);
????????格式:NameVirtualHost addr[:port]
?
????????配置示例:
????/etc/httpd/conf/httpd.conf中添加如下指令:
| 1 2 | Listen172.16.88.99:8000 NameVirtualHost?172.16.88.99:80 |
?
????/etc/httpd/conf.d/vhost1.conf的內(nèi)容如下:
?
| 1 2 3 4 5 6 7 8 9 10 | <VirtualHost?192.168.109.2:80> ????ServerNamewww.ppp213.com ????DocumentRoot"/myvhost/vhost1/" ????<Directory?"/myvhost/vhost1"> ????????Options?None ????????AllowOverride?None ????????Order?allow,deny ????????Allow?from?all ????</Directory> </VirtualHost> |
?
????/etc/httpd/conf.d/vhost2.conf的內(nèi)容如下
?
| 1 2 3 4 5 6 7 8 9 10 | <VirtualHost?192.168.109.20:8080> ????ServerNamewww.ppp213.cn ????DocumentRoot"/myvhost/vhost2/" ????<Directory?"/myvhost/vhost2/"> ????????Options?None ????????AllowOverride?None ????????Order?allow,deny ????????Allow?from?all ????</Directory> </VirtualHost> |
?
????/etc/httpd/conf.d/vhost3.conf的內(nèi)容如下
| 1 2 3 4 5 6 7 8 9 10 | <VirtualHost?192.168.109.20:80> ????ServerName?www.ppp213.org ????DocumentRoot?"/myvhost/vhost3/" ????<Directory?"/myvhost/vhost3/"> ????Options?None ????AllowOverride?None ????Order?allow,deny ????Allow?from?all ????</Directory> </VirtualHost> |
?
????????為主機(jī)添加新的ip地址 192.168.109.20:
| 1 | ip?add?add?192.168.109.20/16?dev?eth0?label?eth0:0 |
????
????????分別創(chuàng)建/myvhost/vhost1,/myvhost/vhost2,/myvhost/vhost3,并再其下創(chuàng)建index.html,重新載入httpd服務(wù)后,分別訪(fǎng)問(wèn)192.168.109.2、192.168.109.20、192.168.109.20:8080
????????
????? ??
????????
轉(zhuǎn)載于:https://www.cnblogs.com/noxy/p/8989240.html
總結(jié)
以上是生活随笔為你收集整理的linux系统web站点设置-http基础设置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 洛谷P3245 [HNOI2016]大数
- 下一篇: Linux 命令[2]:mkdir