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