httpd2.2的配置文件常見設置

?

?

?摘要:一個服務的配置文件非常重要,弄懂配置文件是熟練掌握服務的必要前提。

一、httpd-2.2常見文件介紹

(1)配置文件:

主配置文件盡量別改,改自己的子配置文件

  /etc/httpd/conf/httpd.conf?主配置文件

  /etc/httpd/conf.d/*.conf?自配置文件

檢查配置語法:

  httpd -t 通用

  service httpd configtest centos7不支持

服務腳本:/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

主進程文件 :服務起來后會自動生成,可以查進程pid,最后不要手動加

  /etc/httpd/run/httpd.pid

日志文件目錄:

  /var/log/httpd

    access_log: 訪問日志

    error_log :錯誤日志

幫助文檔包:httpd-manual?,按完包后,重啟服務,就能看幫助文檔,沒網也可以看

?

(2)httpd 配置文件的組成:修改前先備份,養成好習慣

# grep "Section" /etc/httpd/conf/httpd.conf ?人為的分成3大段,方便管理,可以隨便放

### Section 1: Global Environment 全局環境配置

### Section 2: 'Main' server configuration 主服務器

### Section 3: Virtual Hosts 虛擬主機,全是注釋,默認沒有

?

配置格式:directive(指令) value(值)

  directive: 不區分字符大小寫

  value: 為路徑時,是否區分大小寫,取決于文件系統

?

二、Httpd 2.2 常見配置:可以在官網或安裝幫助包查看幫助

vim /etc/httpd/conf/httpd.conf 總配置文件

1、啟動報錯:提示沒有名字fqdn

在總配置文件搜索 /ServerName,把注釋去掉,隨便寫,最好寫自己的網站名;啟動就不報錯了

修改后:

?

2、顯示服務器版本信息

ServerTokens:管理響應首部信息的,顯示服務器版本信息

搜索/ServerTokens,文件默認是OS,可以注釋掉、刪掉,有默認值full

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

This setting applies to the entire server and cannot be enabled or disabled on a virtualhost-by-virtualhost basis. After version 2.0.44, this directive also controls the information presented by the ServerSignature directive.

建議使用:ServerTokens Prod 安全,顯示越詳細越不安全

可以查看幫助信息,要安裝httpd-manual包,幫助信息很詳細

實例:cur -I 192.168.37.106 查詢頭部信息

另:可以在調度器上設置:直接隱藏版本信息或隨意修改

?

3、修改監聽的IP和Port

搜索/Listen,默認80

Listen [IP:]PORT,不要隨意更改,可以用于只想讓特定的ip訪問,不讓其他人訪問

(1) 省略IP 表示為0.0.0.0; 端口綁定所有ip

(2) Listen 指令至少一個,可重復出現多次,寫多個,不能為空或注釋掉,注釋掉服務起不來

  Listen 80

  Listen 8080 寫多個就可開啟多個端口,但是訪問的還是同一個網站

注意:改了端口,要在訪問時加上自己改的端口

(3) 修改監聽socket,重啟服務進程方可生效

?

3、持久連接

Persistent Connection :連接持久建立,每個資源獲取完成后不會斷開連接,而是繼續等待其它的請求完成,默認關閉持久連接 KeepAlive Off

  斷開條件:數量限制: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 Module )多路處理模塊

(1)MPM 工作模式介紹:prefork、worker、 event(試驗階段)

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

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

  多個子進程:工作work 進程,每個子進程處理一個請求;系統初始時,預先生成多個空閑進程,等待請求,最大不超過1024個

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

  一個主進程: 生成m 個子進程,每個子進程負責生成n個線程,每個線程響應一個請求 ,并發響應請求:m*n

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

  一個主進程:生成m個子進程,每個進程直接響應n個請求,并發響應請求:m*n ,有專門的線程來管理這些keep-alive?類型的監控線程,當有真實請求時, 將請求傳遞給服務線程,執行完畢后,又允許釋放 。這樣增強了高并發場景下的請求處理力 能力

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

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

? 圖示:

① prefork MPM

② worker MPM

③ event MPM

注意:httpd-2.2 不支持同時編譯多個模塊,所以只能編譯時選定一個;rpm 安裝的包提供三個二進制程序文件,分別用于實現對不同MPM 機制的支持

(2)確認方法:

  ps aux | grep httpd

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

查看模塊列表:

  查看靜態編譯的模塊

    httpd?-l

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

    httpd?-M

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

動態模塊路徑:/usr/lib64/httpd/modules

?

(3)更換使用的httpd 程序模塊:

/etc/sysconfig/httpd?在這個文件中改

① HTTPD=/usr/sbin/httpd.worker ?默認是被注釋的,去掉注釋就切換到worker程序了

重啟服務生效

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

httpd.worker?-l 模塊換了,命令也換了

②?Httpd 2.4 與之不同

以動態模塊方式提供

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

httpd -M |grep mpm

重啟服務 生效

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

?

(4)prefork 的默認配置:主配置文件中,搜索/prefork

<IfModule prefork.c> 根據工作環境設置

StartServers 8 一開啟服務就準備8個進程

MinSpareServers 5 最小的空閑進程,先預留,不夠就生成

MaxSpareServers 20 最大空閑進程

ServerLimit 256 最多進程數, 最大256

MaxClients 256 最大并發數

MaxRequestsPerChild 4000 子進程最多能處理請求數量。在處理MaxRequestsPerChild 個請求之后, 子進程將會被父進程終止,這時候子進程占用的內存就會釋放( 為0時永遠不釋放)

</IfModule>

?

(5) worker 的默認配置:主配置文件中,搜索/worker

<IfModule worker.c>

StartServers 4 一開啟服務就準備4個進程,4x25=100線程

MaxClients 300 最多300個線程

MinSpareThreads 25 最小空閑25線程

MaxSpareThreads 75 最大空閑75線程,和上邊沖突,開服務先開啟4個進程,再殺死1個進程

ThreadsPerChild 25 每個子進程最大25個線程

MaxRequestsPerChild 0 無限制

</IfModule>

(6) 測試性能:ab命令 yum -y install httpd-tools

ab -c 100 -n 1000?http://192.168.30.106/

-  c:并發連接數

  -n:總的連接數

結果:發現prefork和worker性能沒有什么較大的差異

?

5 、DSO:Dynamic Shared Object

①?加載動態模塊配置:/etc/httpd/conf/httpd.conf 主配置文件

配置指定實現模塊加載格式:搜索/LoadModule

② 格式:

LoadModule <mod_name> <mod_path>

模塊文件路徑可使用相對路徑:相對于ServerRoot 服務的根(設置的為/etc/httpd)

③?httpd -M 可以查詢模塊信息,若刪除或注釋掉一個模塊,那個模塊的功能就會禁用,且httpd -M 查詢不到

因此,當我們需要用PHP時,可以寫入PHP的模塊,就能使用了

示例:

LoadModule auth_basic_module

modules/mod_auth_basic.so

?

6 、定義'Main' server (主站點) 的文檔頁面路徑

搜索/DocumentRoot

格式:DocumentRoot?"/path"

作用:文檔路徑映射:

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

注意:

① 可以寫多行,但是下邊的會覆蓋上邊的,最后還是使用下邊的,寫到子配置文件一樣,因為子配置文件Include conf.d/*.conf在這行設置的上邊,會被這行設置覆蓋。

② 若設置的主站點不存在,那么服務會啟動失敗!

示例:

  DocumentRoot "/app/site1"

   http:/192.168.30.106/--> /app/site1/index.html

注意:SELinux 和iptables 的狀態,要關掉

?

7、定義站點主頁面

搜索:/DirectoryIndex

格式:DirectoryIndex?index.html index.html.var

分析:

① 查詢http://192.168.30.106/ 及其子目錄時,不指定文件,可以默認打開目錄下的index.html文件

②?若沒有設置中的兩個文件,看其他設置:下設置9,默認是報錯;

有特定設置會顯示特定設置,如首頁;子配置文件 /etc/httpd/conf.d/welcome.conf?有設置,若只有 / 或多個,目錄下沒有index.html,就顯示報錯頁面,welcome.conf這個設置優先級高,安全

報錯頁面

?

8 、站點訪問控制常見機制

可基于兩種機制指明對哪些資源進行何種訪問控制訪問控制機制有兩種:客戶端來源地址,用戶賬號

?文件系統路徑:格式

<Directory?"/path">

...

</Directory>

<Files?"/path/file">

...

</Files>

<FilesMatch?"PATTERN">

...

</FilesMatch>

例:主配置文件中,不能訪問 .ht 開頭的文件的設置

?

②?URL 路徑:支持正則,通配符

<Location?"">

...

</Location>

<LocationMatch?"">

...

</LocationMatch>

例:子配置文件,/etc/httpd/conf.d/welcome.conf 的設置

注意:支持正則,通配符

示例:

<FilesMatch "\.(gif|jpe?g|png)$"> 正則

<Files?"?at.*">?通配符

<Location?/status> 絕對路徑的目錄

<LocationMatch "/(extra|special)/data">

?

9 、<Directory> 中"基于源地址"實現訪問控制

(1)?Options?:后跟1 個或多個以空白字符分隔的選項列表,可在總配置文件中修改,也可從創建一個自配置文件中修改設置

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

  常見選項:

  Indexes?:指明的URL 路徑下不存在定義的主頁面資源相符的資源文件時,返回索引列表給用戶,默認是不允許,加上不安全;有需要的時候,例如做yum源的時候

  FollowSymLinks?:允許訪問符號所指向的源文件,例:鏈接文件,默認允許

  None :全部禁用

  All:全部允許

注意:若沖突,后邊的設置會覆蓋前邊的

子目錄也可以設置的和父目錄不一樣,放在下邊

例:vim /etc/httpd/conf.d/test.conf 子配置文件

?

(2) AllowOverride,和上邊實現的效果一樣,就是把設置放在目錄的隱藏文件下.htaccess

與訪問控制相關的哪些指令可以放在指定目錄下的.htaccess(由AccessFileName 指定)文件中,覆蓋之前的,.htaccess是主配置文件中設置指定的

用法:vim /etc/httpd/conf.d/test.conf

只對<directory> 語句有效

  AllowOverride All: 所有指令都有效

  AllowOverride None :.htaccess 文件無效

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

然后在.htaccess文件中設置,.htaccess放在所需要控制的目錄下,例bbs目錄

vim /app/site1/.htaccess

options +indexes -followsymlinks

?

(3) order 和allow 、deny,在2.4中已無效,有另外的權限控制

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

分析:① 若不沖突,allow,deny都產生效果,例

若沖突,看誰在后,在后的優先級高,但是只限于沖突的

例:除107,這個網段的其他ip可以訪問,但這個網段以外,都拒絕

③ 沒在deny、allow中設置的,看allow/deny誰在后邊,誰優先級高

?

10 、日志設定

日志類型:

  訪問日志

  錯誤日志

錯誤日志:

  ErrorLog logs/error_log

  LogLevel warn

  loglevel 可選值:

  debug, info, notice, warn,error

  crit, alert, emerg

?

訪問日志:搜索:/LogForma

定義訪問日志格式: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" 的值;即從哪個頁面中的超鏈接跳轉至當前頁面的

  防止倒鏈,i就是首部的意思

??%{User-Agent}i?請求報文中首部"User-Agent" 的值;即發出請求的應用程序

幫助文檔里都有

查詢日志:tail /var/log/httpd/access_log

?

11 、設定默認字符集

AddDefaultCharset UTF-8(全球) 默認

中文字符集:GBK, GB2312(中文簡體), GB18030

?

12 、定義路徑別名

格式:?Alias?/URL/ "/PATH/"?/URL/有沒有都無所謂,虛擬的目錄

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

?

13 、status 頁面

這個功能需要status_module 模塊

  httpd -M | grep status 查詢這個模塊有沒有被加載

在總配置文件中搜索/server-status

LoadModule status_module modules/mod_status.so 這個模塊在總配置文件有加載

<Location /server-status> 本來是注釋掉的

  SetHandler server-status2 這個名字隨便寫,只要訪問時用這個名字就行

  Order allow,deny

  Allow from 192.168.30.0/24

</Location>

ExtendedStatus On 顯示擴展信息,默認也是注釋的

顯示狀態頁面

狀態的類型:

  "-"等待連接 "S"啟動 "R"處于讀取狀態

  "W"發送應答 "K"保持長連接 "D"dns查詢

  "C"正處于關閉狀態 "L"記錄日志 "G"優雅的終止,溫柔的斷開

  "r"把空閑的worker進程清理 "."沒有正常的進程

?

轉載自:http://www.cnblogs.com/along21/p/7691642.html

版權聲明:本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。


不積跬步無以至千里

轉載于:https://www.cnblogs.com/dannylinux/articles/7999156.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/390596.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/390596.shtml
英文地址,請注明出處:http://en.pswp.cn/news/390596.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

leetcode 149. 直線上最多的點數

題目 給你一個數組 points &#xff0c;其中 points[i] [xi, yi] 表示 X-Y 平面上的一個點。求最多有多少個點在同一條直線上。 示例 1&#xff1a; 輸入&#xff1a;points [[1,1],[2,2],[3,3]] 輸出&#xff1a;3 示例 2&#xff1a; 輸入&#xff1a;points [[1,1],[3,…

solidity開發以太坊代幣智能合約

智能合約開發是以太坊編程的核心之一&#xff0c;而代幣是區塊鏈應用的關鍵環節&#xff0c;下面我們來用solidity語言開發一個代幣合約的實例&#xff0c;希望對大家有幫助。 以太坊的應用被稱為去中心化應用&#xff08;DApp&#xff09;&#xff0c;DApp的開發主要包括兩大部…

2019大數據課程_根據數據,2019年最佳免費在線課程

2019大數據課程As we do each year, Class Central has tallied the best courses of the previous year, based on thousands of learner reviews. (Here are the rankings from 2015, 2016, 2017, and 2018.) 與我們每年一樣&#xff0c;根據數千名學習者的評論&#xff0c; …

2017-12-07 socket 讀取問題

1.用socke阻塞方式讀取服務端發送的數據時會出現讀取一直阻塞的情況&#xff0c;如果設置了超時時間會在超時時間后讀取到數據: 原因&#xff1a;在不確定服務器會不會發送 socket發送的數據不會返回null 或者-1 所以用常規的判斷方法是不行的。 解決辦法有兩個&#xff1a;1 …

靜態代理設計與動態代理設計

靜態代理設計模式 代理設計模式最本質的特質&#xff1a;一個真實業務主題只完成核心操作&#xff0c;而所有與之輔助的功能都由代理類來完成。 例如&#xff0c;在進行數據庫更新的過程之中&#xff0c;事務處理必須起作用&#xff0c;所以此時就可以編寫代理設計模式來完成。…

svm機器學習算法_SVM機器學習算法介紹

svm機器學習算法According to OpenCVs "Introduction to Support Vector Machines", a Support Vector Machine (SVM):根據OpenCV“支持向量機簡介”&#xff0c;支持向量機(SVM)&#xff1a; ...is a discriminative classifier formally defined by a separating …

6.3 遍歷字典

遍歷所有的鍵—值對 遍歷字典時&#xff0c;鍵—值對的返回順序也與存儲順序不同。 6.3.2 遍歷字典中的所有鍵 在不需要使用字典中的值時&#xff0c;方法keys() 很有用。 6.3.3 按順序遍歷字典中的所有鍵 要以特定的順序返回元素&#xff0c;一種辦法是在for 循環中對返回的鍵…

Google Guava新手教程

以下資料整理自網絡 一、Google Guava入門介紹 引言 Guavaproject包括了若干被Google的 Java項目廣泛依賴 的核心庫&#xff0c;比如&#xff1a;集合 [collections] 、緩存 [caching] 、原生類型支持 [primitives support] 、并發庫 [concurrency libraries] 、通用注解 [comm…

HTML DOM方法

querySelector() (querySelector()) The Document method querySelector() returns the first element within the document that matches the specified selector, or group of selectors. If no matches are found, null is returned.Document方法querySelector()返回文檔中與…

leetcode 773. 滑動謎題

題目 在一個 2 x 3 的板上&#xff08;board&#xff09;有 5 塊磚瓦&#xff0c;用數字 1~5 來表示, 以及一塊空缺用 0 來表示. 一次移動定義為選擇 0 與一個相鄰的數字&#xff08;上下左右&#xff09;進行交換. 最終當板 board 的結果是 [[1,2,3],[4,5,0]] 謎板被解開。…

數據科學領域有哪些技術_領域知識在數據科學中到底有多重要?

數據科學領域有哪些技術Jeremie Harris: “In a way, it’s almost like a data scientist or a data analyst has to be like a private investigator more than just a technical person.”杰里米哈里斯(Jeremie Harris) &#xff1a;“ 從某種意義上說&#xff0c;這就像是數…

python 算術運算

1. 算術運算符與優先級 # -*- coding:utf-8 -*-# 運算符含有,-,*,/,**,//,% # ** 表示^ , 也就是次方 a 2 ** 4 print 2 ** 4 , aa 16 / 5 print 16 / 5 , aa 16.0 / 5 print 16.0 / 5 , a# 結果再進行一次floor a 16.0 // 5.0 print 16.0 // 5.0 , aa 16 // 5 print …

c語言編程時碰到取整去不了_碰到編程墻時如何解開

c語言編程時碰到取整去不了Getting stuck is part of being a programmer, no matter the level. The so-called “easy” problem is actually pretty hard. You’re not exactly sure how to move forward. What you thought would work doesn’t.無論身在何處&#xff0c;陷…

初創公司怎么做銷售數據分析_為什么您的初創企業需要數據科學來解決這一危機...

初創公司怎么做銷售數據分析The spread of coronavirus is delivering a massive blow to the global economy. The lockdown and work from home restrictions have forced thousands of startups to halt expansion plans, cancel services, and announce layoffs.冠狀病毒的…

leetcode 909. 蛇梯棋

題目 N x N 的棋盤 board 上&#xff0c;按從 1 到 N*N 的數字給方格編號&#xff0c;編號 從左下角開始&#xff0c;每一行交替方向。 例如&#xff0c;一塊 6 x 6 大小的棋盤&#xff0c;編號如下&#xff1a; r 行 c 列的棋盤&#xff0c;按前述方法編號&#xff0c;棋盤格…

Python基礎之window常見操作

一、window的常見操作&#xff1a; cd c:\ #進入C盤d: #從C盤切換到D盤 cd python #進入目錄cd .. #往上走一層目錄dir #查看目錄文件列表cd ../.. #往上上走一層目錄 二、常見的文件后綴名&#xff1a; .txt 記事本文本文件.doc word文件.xls excel文件.ppt PPT文件.exe 可執行…

WPF效果(GIS三維篇)

二維的GIS已經被我玩爛了&#xff0c;緊接著就是三維了&#xff0c;哈哈&#xff01;先來看看最簡單的效果&#xff1a; 轉載于:https://www.cnblogs.com/OhMonkey/p/8954626.html

css注釋_CSS注釋示例–如何注釋CSS

css注釋Comments are used in CSS to explain a block of code or to make temporary changes during development. The commented code doesn’t execute.CSS中使用注釋來解釋代碼塊或在開發過程中進行臨時更改。 注釋的代碼不執行。 Both single and multi-line comments in…

r軟件時間序列分析論文_高度比較的時間序列分析-一篇論文評論

r軟件時間序列分析論文數據科學 &#xff0c; 機器學習 (Data Science, Machine Learning) In machine learning with time series, using features extracted from series is more powerful than simply treating a time series in a tabular form, with each date/timestamp …

leetcode 168. Excel表列名稱

題目 給你一個整數 columnNumber &#xff0c;返回它在 Excel 表中相對應的列名稱。 例如&#xff1a; A -> 1 B -> 2 C -> 3 … Z -> 26 AA -> 27 AB -> 28 … 示例 1&#xff1a; 輸入&#xff1a;columnNumber 1 輸出&#xff1a;“A” 示例 2&…