文章目錄
- 一、DNS概述
- 1、域名
- 2、域名決議
- 3、為什么要使用域名決議(DNS服務器)
- 4、DNS服務器的作用
- 5、域名決議的程序
- 6、網站的基本概念
- 7、頁面的分類和區別
- 8、網站傳輸協議
- 9、HTTP協議分析
- 10、常見狀態回傳碼
- 二、HTTP請求報文和回應報文
- (1)概述
- (2)程序
- (3)報文的結構
- 三、apache原理概述
- 1、apache概述
- 2、apache特點
- 3、apache常見的三種作業模式
- (1)MPM=prefork
- (2)MPM=worker
- (3)MPM=event
- 4、靜態編譯和動態編譯
- 5、訪問日志access_log詳解
- 四、安裝apache
- (1)實驗環境
- (2)實驗目的
- (3)安裝httpd服務
- (4)優化httpd服務,調整三種作業模式
- -prefork作業模式
- -worker作業模式
- -event作業模式
- 五、擴展
一、DNS概述
1、域名
域名又稱為FQDN,使用域名是為了解決ip地址不容易記的問題
一個完整的FQDN也就是域名,由主機名+域名組成
例如: www.baidu.com 主機名就是www而域名就是baidu.com
2、域名決議
域名決議包含本地hosts檔案決議和DNS服務器決議
-
系統中都會有一個hosts檔案,用戶可以自己定義ip和域名去自定義決議ip
-
DNS服務器相當于一個大型的專門寫hosts的系統,PC機可以去指定DNS服務器,當PC機收到一個本地hosts中沒有的域名,本地無法決議,就會轉到PC機指定的DNS服務器中,讓DNS服務器去決議,然后回應PC機,從而成功決議
3、為什么要使用域名決議(DNS服務器)
因為計算機之間進行通信使用的是ip地址,但是對于用戶來說,ip地址比較難記,所以就出現了域名決議,通過字母組成的單詞,方便用戶去記憶
4、DNS服務器的作用
將 域 名 解 析 成 i p 地 址 將域名決議成ip地址 將域名解析成ip地址
5、域名決議的程序

6、網站的基本概念
Web網站:有web1.0 和web2.0,web1.0側重以編輯為特征,web2.0側重于用戶互動
web的幾個基本概念分為: 網站、網頁、主頁、HTTP、URL、HTML、超鏈接
URL和URI很相似:
- URL的資源位置是絕對路徑
- URI的資源位置是相對路徑
例如: URL=https://www.aaa.com/
| https | 為用戶訪問使用的協議 |
|---|---|
| www.aaa.com | 為用戶訪問的域名,也可以是ip地址和埠號 |
| / | 為用戶訪問的資源,/就是絕對路徑 |
7、頁面的分類和區別
-
靜態頁面: 頁面直接由web服務進行決議 ,頁面可以包含動態,但是內容是靜止的,部署靜態頁面需要在服務器上安裝能夠決議靜態頁面的服務,nginx、httpd這兩種web服務默認只能決議靜態頁面,
主頁檔案后綴名為.html .xml .htm -
動態頁面: 頁面由php進行決議 ,頁面會隨著時間、環境、資料庫資料等因素去進行相應的變化,部署動態頁面同樣需要在服務器上安裝能夠決議動態頁面的服務(nginx、httpd等),還要安裝php來決議動態頁面,
主頁檔案后綴名為:.php .asp .jsp .pl .py .cgi
后 綴 不 同 就 是 開 發 語 言 不 同 , 動 態 頁 面 一 般 以 編 程 語 言 編 寫 后綴不同就是開發語言不同,動態頁面一般以編程語言撰寫 后綴不同就是開發語言不同,動態頁面一般以編程語言編寫
8、網站傳輸協議
一般分為:http超文本傳輸協議和https安全超文本傳輸協議
| http | 監聽埠默認為tcp的80埠,不進行加密傳輸 |
|---|---|
| https | 監聽埠默認為tcp的443埠,進行加密傳輸 |
9、HTTP協議分析
(1)HTTP: HTTP又稱超文本傳輸協議,是現在互聯網應用中使用最多的一種網路協議,協議的核心功能就是傳輸Web服務器上的以html為后綴的頁面和其他檔案
(2)HTTP版本: http0.9 已經被淘汰,http1.0和http1.1 是目前廣泛使用的,http2.0 還沒有普及
(3)HTTP協議傳輸程序:
(1)用戶使用PC1的瀏覽器訪問指定的URL也就是域名
(2)如果PC1有本地決議就直接進行域名決議進行訪問,沒有本地決議那就轉發給指定的DNS服務器去進行域名決議
(3)獲取埠號,一般是80或者443
(4)PC1連接到域名決議后的ip地址以及埠號
(5)PC1發送一條http get讀取資料的請求
(6)PC1從服務器讀取http回應
(7)關閉連接
(8)PC1瀏覽器成顯示頁面

(4)影響客戶端訪問web站點的因素: 客戶端請求的網路I/O,web服務器請求頁面的磁盤I/O
I
/
O
:
i
n
p
u
t
和
o
u
t
p
u
t
即
上
傳
和
讀
取
I/O : input 和 output 即上傳和讀取
I/O:input和output即上傳和讀取
10、常見狀態回傳碼
| 200 | 表示頁面成功訪問 ok |
|---|---|
| 301 | 請求的頁面永久跳轉了 |
| 403 | 禁止訪問該頁面 |
| 404 | 找不到該頁面 |
| 500 | 服務器內部錯誤 |
| 502 | 網管錯誤 |
| 503 | 當前服務不可用 |
| 504 | 網關請求超時 |
二、HTTP請求報文和回應報文
(1)概述
HTTP協議是一個應用層協議,報文主要分為: 請求報文和回應報文
(2)程序
-
當客戶端請求一個網頁時,會先通過http協議將請求的內容封裝在http請求報文中并且發送給服務器
-
服務器收到客戶端的請求報文后根據報文的協議規范,進行報文決議
-
服務器決議完成后向客戶端回傳回應報文
(3)報文的結構
一般分為三個結構:
1、起始行,對報文進行描述,包括了三個部分
資源通過一組http頭和呈現資料(如html檔案或者圖片視頻等)回傳給客戶端
- 請求的方法,常用的有GET、POST、HEAD等
GET: 向特定的資源發送請求,它的本質就是發送一個請求來取得服務器上的某一資源,GET請求中,永遠不會包含呈現資料
POST: 向指定資源提交資料進行處理請求,例如提交表單或者上傳檔案,
HEAD: 向服務器索與GET請求相同的回應,只不過回應體將不會被回傳
- 請求的URL
- 協議型別以及版本
2、頭部,對報文中添加一些附加資訊
3、主體,資料的主體
三、apache原理概述
1、apache概述
apache作為最早的web服務程式,它是通過http協議來提供網頁瀏覽服務
2、apache特點
-
模塊化設定
-
開放源代碼
-
跨平臺應用
-
支持多種web編程語言
-
運行穩定
3、apache常見的三種作業模式
apache的核心模塊叫做多路處理模塊(Multi-Processing Module),簡稱MPM
常見的三種模式為: prefork、worker、event
使用httpd -v查看當前apache版本,httpd -V |grep "server MPM" 查看apache當前模式
httpd_2.2版本默認使用prefork,httpd_2.4版本默認使用worker
一
般
來
說
,
每
個
模
式
都
會
默
認
有
兩
個
閑
置
進
程
,
所
以
一
般
來
說
如
果
只
剩
一
個
閑
置
進
程
,
那
么
a
p
a
c
h
e
就
會
自
動
創
建
一
個
閑
置
進
程
一般來說,每個模式都會默認有兩個閑置行程,所以一般來說如果只剩一個閑置行程,那么apache就會自動創建一個閑置行程
一般來說,每個模式都會默認有兩個閑置進程,所以一般來說如果只剩一個閑置進程,那么apache就會自動創建一個閑置進程
驚群效應: 當所有行程都為休眠狀態時,這個時候突然來了一個請求,這個請求會使所有行程都進行處理,但是最終只有一個行程可以進行 0處理,其他行程沒有請求處理就又會進入休眠狀態,這樣的現象和性能浪費就叫做驚群效應,而apache幾乎所有模式都有驚群效應
(1)MPM=prefork
prefork是多行程模式,一個行程處理一個連接,每個行程相對來說都是獨立的,這個程序會用到select機制來通知
優點: 穩定、回應快
缺點: 消耗大量cpu和記憶體、keep-alive長連接占據問題,不適用于高并發場景
———————————————————————————————————————————————————注釋——————————————————————————————————————————————————————
keep-alive長連接占據問題:即tcp連接在發送后仍然與客戶端保持連接狀態,客戶端的瀏覽器可以通過相同的連接去發送請求,這樣雖然節省了為每個請求建立新連接的時間、節約了帶寬并且減少了重復請求的次數加快了客戶端訪問的速度,但是在長連接狀態下,進行長連接的介面是無法和新的請求進行連接的,從而導致行程越來越多,使cpu和記憶體過度負載,導致服務器卡頓
原理: prefork模式的行程只能創建一個執行緒,所以說prefork是一個行程處理一個連接

(2)MPM=worker
worker是多行程多執行緒模式,一個行程創建多個執行緒,每個執行緒回應一個連接請求,但是通知機制還是select不過可以接受更多的請求
優點: 節省資源,適用于高并發場景
缺點: 兼容性不好、穩定性不好,同樣具有keep-alive長連接占據問題
原理: worker模式的行程可以創建多個執行緒,每個執行緒回應一個連接請求

(3)MPM=event
event是worker的升級版,把服務器行程和回應連接請求進行了分離,基于異步I/O模型(即input和output上傳讀取是分開的)
I/O模型使event在連接請求過來后行程并不直接處理請求,而是交給其他機制來處理,然后通過epoll機制來確認請求是否完成,在這個程序中,行程本身一直處于空閑狀態,所以一直可以接受用戶的請求,從而實作一個行程回應多個連接請求,
event對于keep-alive長連接處理也有所優化,event模式有單獨的執行緒去處理keep-alive長連接,執行完畢后才會允許長連接釋放,這樣增強了高并發場景下的連接請求處理能力,
優點: 支持海量級高并發負載,消耗資源少,適用于高并發場景
缺點: 對https支持的不完美

4、靜態編譯和動態編譯
httpd是高度模塊化的程式,也就是說httpd的各種功能都需要加載對應的模塊來執行,但是前提是必須將使用功能的對應模塊進行編譯,方便httpd進行加載
- 靜態編譯: 直接將模塊編譯到httpd的核心當中,靜態編譯的所有模塊都會隨著httpd主程式進行啟動和關閉
- 動態編譯: 將模塊編譯好,但是不編譯到httpd的核心當中,想要啟動動態編譯的模塊,需要在httpd的組態檔中使用loadModule指令去加載使用
5、訪問日志access_log詳解
[root@rzy ~]# tail -1 /usr/local/httpd/logs/access_log #查看最后一行
192.168.100.230 - - [13/Apr/2021:19:22:17 +0800] "GET / HTTP/1.1" 200 6
#注釋:
192.168.100.230:遠程主機ip,表示訪問網站的是誰
- :這一行是用戶的郵箱,但是為了避免用戶的郵箱被垃圾郵件騷擾,第二列使用-取代
- :用于記錄瀏覽者進行身份驗證時提供的名字,這里為-是因為沒有使用用戶密碼驗證登錄,例如用rzy 密碼123登錄,那么這里顯示的就是rzy
[13/Apr/2021:19:22:17 +0800] :請求時間,表明用戶訪問的時間,采用公用日志格式或者標準英文格式,+0800表示服務器所處時區位于UTC之后的8小時
"GET /favicon.ico HTTP/1.1" :GET表示方法,/表示用戶訪問的資源這里表示的是網頁目錄的相對資源,HTTP/1.1表示用戶訪問時使用的協議
200 :狀態碼
6 :發送的位元組數,可以查看配置主頁的內容有多少位元組
我這里使用的是虛擬機,使用真機查看時最后還會多一個欄位,為訪問用戶的客戶端系統、瀏覽器型別等資訊
####
[root@rzy ~]# ll /usr/local/httpd/htdocs/
總用量 4
-rw-r--r-- 1 root root 6 4月 13 17:56 index.html #6 表示6個位元組
四、安裝apache
(1)實驗環境
| 系統 | ip地址 | 主機名 | httpd版本 |
|---|---|---|---|
| Centos7.4 | 192.168.100.202 | rzy | httpd-2.2.17.tar.gz |
(2)實驗目的
- 客戶端可以成功訪問httpd服務器
- 優化httpd服務,調整三種作業模式
(3)安裝httpd服務
******(1)先做初始配置
[root@rzy ~]# systemctl stop firewalld
[root@rzy ~]# setenforce 0
setenforce: SELinux is disabled
[root@rzy ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 寫保護,將以只讀方式掛載
mount: /dev/sr0 已經掛載或 /mnt 忙
/dev/sr0 已經掛載到 /mnt 上
[root@rzy ~]# rpm -e httpd --nodeps #檢查httpd服務是否安裝,如果兩個httpd埠會沖突
錯誤:未安裝軟體包 httpd
******(2)上傳httpd原始碼包,進行解壓,安裝
[root@rzy ~]# ll
總用量 6448
-rw-------. 1 root root 1264 1月 12 18:27 anaconda-ks.cfg
-rw-r--r-- 1 root root 6597991 4月 13 17:10 httpd-2.2.17.tar.gz
[root@rzy ~]# tar xf httpd-2.2.17.tar.gz -C /usr/src/
[root@rzy ~]# cd /usr/src/httpd-2.2.17/
[root@rzy httpd-2.2.17]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-cgi
#等待配置完成,模塊注釋:
--prefix= 指定安裝目錄
--enable-so 開啟動態加載模塊的功能
--enable-rewrite 開啟地址重寫、重定向功能
--enable-cgi 開啟與一些動態編程語言之間進行互動的介面
#配置完成后進行編譯安裝
[root@rzy httpd-2.2.17]# make && make install
[root@rzy httpd-2.2.17]# echo $? #檢測安裝是否成功,使用$?來查看,回傳為0則為成功
0
[root@rzy httpd-2.2.17]# ls /usr/local/httpd/ #檢查prefix指定的安裝路徑下是否有了httpd的相關目錄
bin build cgi-bin conf error htdocs icons include lib logs man manual modules
#常用目錄注釋:
bin 存放httpd的各種命令
lib 跟httpd相關的庫檔案
man httpd的幫助檔案
modules httpd的模塊檔案
conf httpd的組態檔存放目錄
htdocs httpd的網頁存放位置
logs httpd的日志存放位置
build 存放httpd之前的配置資訊的檔案
###########
******(3)安裝httpd后的優化配置
[root@rzy httpd-2.2.17]# cd
[root@rzy ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin/ #優化httpd執行命令路徑
[root@rzy ~]# httpd -v #查看httpd的版本
Server version: Apache/2.2.17 (Unix)
Server built: Apr 13 2021 17:17:14
[root@rzy ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd #復制一份httpd的啟動腳本
[root@rzy ~]# chmod -x /etc/init.d/httpd #添加可執行權限
[root@rzy ~]# /etc/init.d/httpd start #啟動httpd
httpd: Could not reliably determine the server's fully qualified domain name, using fe80::34f4:cad:16ae:5b4d for ServerName #這個提示語是因為沒有修改服務器域名
[root@rzy ~]# netstat -anpt | grep 80 #檢查埠
tcp6 0 0 :::80 :::* LISTEN 53530/httpd
[root@rzy ~]# /etc/init.d/httpd stop #關閉httpd
httpd: Could not reliably determine the server's fully qualified domain name, using fe80::34f4:cad:16ae:5b4d for ServerName
[root@rzy ~]# netstat -anpt | grep 80 #檢查埠
******(4)修改組態檔,配置網頁檔案
[root@rzy ~]# vim /usr/local/httpd/conf/httpd.conf
,,,,,,
87 #
88 ServerAdmin admin@linuxfan.cn #這個是管理員郵箱,不用修改,這是apache官方為了收集有多少人使用apache而創建的
89
,,,,,,
96 #
97 ServerName www.rzy.com:80 #修改域名可以解決剛才的報錯問題
98
,,,,,,
131 <Directory "/usr/local/httpd/htdocs"> #這個區域用來指定網頁的路徑,并且可以設定網頁,比如限制訪問、認證等
132 Options Indexes FollowSymLinks #中間的#號可以全部洗掉
133 AllowOverride None
134 Order allow,deny
135 Allow from all #限制訪問順序:先允許,后拒絕,默認拒絕所有,
136 #先拒絕,后允許,默認允許所有
137 </Directory>
138
,,,,,,
143 <IfModule dir_module>
144 DirectoryIndex index.html #apache決議的主頁,后續想安裝php決議動態頁面的話就可以添加index.php
145 </IfModule>
146
,,,,,,
163 #
164 ErrorLog "logs/error_log" #錯誤日志存放位置,這是一個相對路徑是從prefix指定的安裝路徑開始的
165
,,,,,,
170 #
171 LogLevel warn #日志級別
172
,,,,,,
192 #
193 CustomLog "logs/access_log" common #訪問日志存放位置,和錯誤日志相同都是相對路徑
194
#保存退出
[root@rzy ~]# echo "aaaaa" > /usr/local/httpd/htdocs/index.html #創建目錄
[root@rzy ~]# /etc/init.d/httpd start #開啟httpd服務
[root@rzy ~]# netstat -anptu | grep 80 #檢查埠
tcp6 0 0 :::80 :::* LISTEN 53568/httpd
(5)使用客戶機測驗是否可以正常訪問httpd

發現可以正常訪問
(4)優化httpd服務,調整三種作業模式
設定httpd的作業模式時,不僅要考慮網站的并發性能等作業效率,還要考慮服務器硬體cpu和記憶體的占用情況,記憶體尤為重要
-prefork作業模式
- prefork(行程+子行程)模式,是httpd-2.2.17版本默認的作業模式
[root@rzy ~]# /usr/local/httpd/bin/httpd -V | grep "Server MPM" #查看當前apache作業模式
Server MPM: Prefork
[root@rzy ~]# vim /usr/local/httpd/conf/extra/httpd-mpm.conf #查看組態檔中prefork的選項
,,,,,,
36 <IfModule mpm_prefork_module>
37 StartServers 5 #服務器啟動時建立的子行程數量
38 MinSpareServers 5 #空閑子行程最小數量,當空閑子行程數少于該數值將產生新的子行程
39 MaxSpareServers 2 #空閑子行程最大數量,當空閑子行程數大于該數值將殺死多余的子行程
40 MaxClients 150 #限定最大用戶并發數,是對apache性能影響最大的引數
41 MaxRequestsPerChild 10000 #每個子行程在其生存期間允許處理的最大請求數量,若為0則代表該行程不會因為請求數量的變化而停止,
42 </IfModule>
,,,,,,
#保存退出
[root@rzy ~]# vim /usr/local/httpd/conf/httpd.conf
,,,,,,
347 # Server-pool management (MPM specific)
348 Include conf/extra/httpd-mpm.conf #去掉#注釋
349
,,,,,,
#保存退出
[root@rzy ~]# /etc/init.d/httpd restart #重啟服務
[root@rzy ~]# ps aux | grep httpd | grep -v grep #查看行程發現創建了多個子行程
root 53568 0.0 0.1 28304 1980 ? Ss 17:57 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53612 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53613 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53614 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53615 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53616 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
-worker作業模式
- worker(多行程+多執行緒)作業模式,適用于高并發場景
#注意:
想要開啟worker模式,需要在編譯安裝的時候使用 --with-mpm=worker選項指定,所以需要先使用make clean情況已經編譯的內容,再重新編譯
######
[root@rzy ~]# cd /usr/src/httpd-2.2.17/ #先進入解壓原始碼包的目錄
[root@rzy httpd-2.2.17]# make clean #清空已經編譯的內容
[root@rzy httpd-2.2.17]# ./configure --prefix=/usr/local/httpd/ --enable-so --enable-rewrite --enable-cgi --with-mpm=worker && make && make install #重新進行編譯,安裝
[root@rzy httpd-2.2.17]# cd
[root@rzy ~]# /usr/local/httpd/bin/httpd -V | grep "Server MPM" #查看當前模式是否成功修改
Server MPM: Worker
[root@rzy ~]# vim /usr/local/httpd/conf/extra/httpd-mpm.conf #查看組態檔中worker模式的選項
,,,,,,
51 <IfModule mpm_worker_module>
52 StartServers 2 #服務器啟動時建立的子行程數量
53 MaxClients 150 #限定最大用戶并發數
54 MinSpareThreads 25 #空閑子執行緒最小數量,當空閑子執行緒數少于該數值將產生新的子執行緒
55 MaxSpareThreads 75 #空閑子執行緒最大數量,當空閑子執行緒數大于該數值將殺死多余的子執行緒
56 ThreadsPerChild 50 #每個子行程最大的并發執行緒數
57 MaxRequestsPerChild 10000 #每個子行程在其生存期間內允許服務的最大請求數量,設定為0則子行程將永遠不會結束
58 </IfModule>
59
,,,,,,
#保存退出
[root@rzy ~]# ps aux | grep httpd | grep -v grep #查看子行程數
root 53568 0.0 0.1 28304 1980 ? Ss 17:57 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53612 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53613 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53614 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53615 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53616 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
-event作業模式
- event是一個多行程,多執行緒的作業模式,解決了長連接占據問題,適用于高并發場景
[root@rzy ~]# cd /usr/src/httpd-2.2.17/
[root@rzy httpd-2.2.17]# make clean #同樣進行配置清空
[root@rzy httpd-2.2.17]# ./configure --prefix=/usr/local/httpd/ --enable-so --enable-rewrite --enable-cgi --with-mpm=event && make && make install #使用--with-mpm=event安裝
[root@rzy httpd-2.2.17]# cd
[root@rzy ~]# /usr/local/httpd/bin/httpd -V | grep "Server MPM" #查看模式是否修改成功
Server MPM: Event
[root@rzy ~]# vim /usr/local/httpd/conf/extra/httpd-mpm.conf #查看組態檔中event的選項
,,,,,,
110
111 <IfModule mpm_event_module> #手動撰寫
112 ServerLimit 1000 #服務器開啟后最大的行程數
113 StartServers 20 #服務器啟動時建立的子行程數
114 MinSpareThreads 25 #空閑子行程最小數,當空閑子行程少于該數值將產生新的子行程
115 MaxSpareThreads 1200 #空閑子行程最大數,當空閑子行程大于該數值將殺死多余的子行程
116 ThreadsPerChild 50 #每個行程的最大并發執行緒數
117 MaxRequestsPerChild 1000 #每個子行程再其生存期間內允許服務器的最大請求數量,為0則子行程永遠不會結束
118 </IfModule>
,,,,,,
#保存退出
[root@rzy ~]# ps aux | grep httpd | grep -v grep #查看子行程數量
root 53568 0.0 0.1 28304 1980 ? Ss 17:57 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53612 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53613 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53614 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53615 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53616 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
[root@rzy ~]# cat /usr/local/httpd/build/config.nice #查看配置時使用的模塊資訊
#! /bin/sh
#
# Created by configure
"./configure" \
"--prefix=/usr/local/httpd/" \
"--enable-so" \
"--enable-rewrite" \
"--enable-cgi" \
"--with-mpm=event" \
"$@"
[root@rzy ~]# /usr/local/httpd/bin/apachectl -D DUMP_MODULES #查看模塊
Loaded Modules:
core_module (static) #static就是靜態模塊的意思
authn_file_module (static)
authn_default_module (static)
authz_host_module (static)
authz_groupfile_module (static)
authz_user_module (static)
authz_default_module (static)
auth_basic_module (static)
include_module (static)
filter_module (static)
log_config_module (static)
env_module (static)
setenvif_module (static)
version_module (static)
mpm_event_module (static)
http_module (static)
mime_module (static)
status_module (static)
autoindex_module (static)
asis_module (static)
cgid_module (static)
cgi_module (static)
negotiation_module (static)
dir_module (static)
actions_module (static)
userdir_module (static)
alias_module (static)
rewrite_module (static)
so_module (static)
Syntax OK
五、擴展
正常情況下不做任何配置如果寫多個目錄的話,用戶訪問的時候會全部顯示出來,例如:
[root@rzy ~]# cd /usr/local/httpd/htdocs/
[root@rzy htdocs]# ll
總用量 4
-rw-r--r-- 1 root root 6 4月 13 17:56 index.html
[root@rzy htdocs]# rm -rf index.html
[root@rzy htdocs]# mkdir aaa
[root@rzy htdocs]# mkdir bbb
[root@rzy htdocs]# cd bbb/
[root@rzy bbb]# echo "bbbbb" > index.html
[root@rzy bbb]# cd ..
[root@rzy htdocs]# cd aaa/
[root@rzy aaa]# echo "aaaaa" > index.html
現在使用瀏覽器進行訪問:

會顯示所有網頁目錄,這樣在真實環境中肯定是不允許,用戶只有在ip后面跟網頁目錄才會顯示相應的內容,例如:

那么只需要在組態檔中修改一樣東西,就可以讓用戶訪問不到所有的目錄
[root@rzy aaa]# vim /usr/local/httpd/conf/httpd.conf
,,,,,,
131 <Directory "/usr/local/httpd/htdocs">
132 Options Indexes FollowSymLinks #把Indexes洗掉
133 AllowOverride None
134 Order allow,deny
135 Allow from all
,,,,,,
#洗掉后:
131 <Directory "/usr/local/httpd/htdocs">
132 Options FollowSymLinks
133 AllowOverride None
134 Order allow,deny
135 Allow from all
,,,,,,
[root@rzy aaa]# /etc/init.d/httpd restart #重啟服務
再次進行訪問
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-P1E9w4f8-1619055222372)(F:\個人檔案\markdown圖片\image-20210413164939530.png)]
就會發現以及禁止訪問了,必須在后面加目錄名才可以
所有的目錄**
[root@rzy aaa]# vim /usr/local/httpd/conf/httpd.conf
,,,,,,
131 <Directory "/usr/local/httpd/htdocs">
132 Options Indexes FollowSymLinks #把Indexes洗掉
133 AllowOverride None
134 Order allow,deny
135 Allow from all
,,,,,,
#洗掉后:
131 <Directory "/usr/local/httpd/htdocs">
132 Options FollowSymLinks
133 AllowOverride None
134 Order allow,deny
135 Allow from all
,,,,,,
[root@rzy aaa]# /etc/init.d/httpd restart #重啟服務
再次進行訪問
![[外鏈圖片轉存中...(img-P1E9w4f8-1619055222372)]](https://img.uj5u.com/2021/04/24/238923241015219.png)
就會發現以及禁止訪問了,必須在后面加目錄名才可以

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/279522.html
標籤:其他
