httpd服務centos6 配置 html網頁
1.centos6掛載兩個光盤 配置yum 復制到cdiso1 安裝httpd服務 網頁測試
兩個鏡像 第一個
mount /dev/sr0 /mnt/ ---先掛載鏡像光盤1 到mnt下
cd /media/cdiso/
mkdir cdiso1 --創建cdiso1的目錄
cp -rf /mnt/* /media/cdiso1 ---把 mnt掛載的鏡像1內容復制到cdiso1中
du -sh /media/cdiso1 ---查看目錄文件大小
第二個
去虛擬機中設置第二個鏡像光盤
cd /media/
mkdir cdiso2 ---創建掛載點
mount /dev/sr0 /media/cdiso2 ---掛載
掛載兩個光盤鏡像的yum源
cd /etc/yum.repos.d/
cp CentOS-Base.repo CentOS-Base.repo.bak
vim CentOS-Base.repo
baseurl=file:///media/cdiso1
file:///media/cdiso2
安裝軟件 httpd
yum clean all --清空緩存
yum -y install httpd --安裝httpd軟件
yum list --查看yum列表
yum -y remove httpd --卸載httpd
1.相關配置文件路徑 啟停腳本 日志存放路徑
/etc/httpd/conf/httpd.conf 主配置文件
/etc/httpd/conf.d/*.conf 輔助配置文件
服務啟停腳本:
/etc/rc.d/init.d/httpd start 或者 service httpd start
httpd啟動選項文件:/etc/sysconfig/httpd ----選擇工作模式
程序的主程序指令文件:① /usr/sbin/httpd
② /usr/sbin/httpd.event
③ /usr/sbin/httpd.worker
日志文件路徑:
/var/log/httpd --->符號連接文件/etc/httpd/logs
訪問日志:access_log --查看誰訪問
錯誤日志:error_log
網頁根路徑:/var/www/html
2.)Centos6的httpd程序 配置文件組成 解讀配置文件
配置文件可以實現配置Httpd的基本功能,
有三部分組成:
①Global Environment 全局特性配置
②Main server configuration 主服務器配置 即網站配置
③Virtual Hosts:虛擬主機配置(不要同第二種同時使用)
33 ### Section 1: Global Environment --全局配置
44 ServerTokens OS --服務器標簽
57 ServerRoot "/etc/httpd" --根目錄(即為默認路徑可指定)
后面如果說有一個配置目錄 沒有指定 那么這就是默認路徑
65 PidFile run/httpd.pid ---阿帕奇運行會有一個pid進程
寫在 run/httpd.pid 這個文件下 ,沒有指絕對路徑就會在 第57 ServerRoot "/etc/httpd" 這個目錄下面
root 27254 0.0 0.4 139140 4792 pts/2 S+ 20:21 0:00 vim httpd.conf
存放的是父進程的Pid號,下面都是子進程 不記錄pid號
Httpd 是root運行的所以為父進程 ,下面是由父進程產生的
1.端口配置Listen(是否增加或更改監聽端口)
格式:Listen [IP:] PORT IP省略代表監聽所有IP地址。PORT端口
135 #Listen 12.34.56.78:80 ---也可以加上ip地址:80(可不寫80)
136 Listen 80 ---偵聽的是80端口(默認)
---也可增加8080 指定端口
2持久連接設置(是否開啟,最大連接數,超時時間)
連接網頁: 一次連接實現傳輸多次請求 (請求網頁資源)
連接建立,每個資源獲取完成后不會斷開連接 而是繼續等待其他的請求完成。
76 KeepAlive Off --是否開啟持久連接以及設置連接超時
83 MaxKeepAliveRequests 100 --一次連接可完成100次的連接 最大連接數
89 KeepAliveTimeout 15 --兩次時間請求間隔超時 15s則斷開
#超時時間為15s,單位默認為s
Httpd-2.4支持毫秒級持久連接。
格式:KeepAlive On|Off 打開瀏覽器,F12打開調試,F5刷新
請求連接的數量和時間限制可自行配置(根據實際生產環境來定義,推薦較短持久連接時間)
3.MPM(多路並發模型響應)運行模式更改
centos6 rpm包為2.2版本,自帶模塊prefork worker event
查看當前使用的MPM模塊:ps aux | grep httpd 默認是prefork
查看當前編譯入httpd核心的MPM模塊
命令格式: http[.MPM] -l http .worker -l http .event -l
運行模式更改 更換httpd程序,MPM模塊
vim /etc/sysconfig/httpd --- httpd的腳本配置文件 解開httpd那個即可
/etc/sysconfig/httpd restart重啟服務
ps aux | grep httpd 查看當前使用的MPM模塊
可看到 /usr/sbin/httpd.worker 已更改
4.DSO動態加載模塊配置
主配置文件中的LoadModule選項,進行啟用或卸載已裝載的模塊。
動態裝卸載模塊的系統存放路徑/etc/httpd/modules/ (鏈接路徑--->/usr/lib64/httpd/modules)
httpd -M 查看其他編譯裝載的模塊
vim /etc/httpd/conf/httpd.conf配置文件路徑 :
/usr/lib64/httpd/modules/模塊文件位置
解#LoadModule foo_module modules/mod_foo.so后面模塊就會加載起來
這是阿帕奇現在加載的模塊 但這個/etc/httpd/modules --是軟連接
連接到 實際模塊文件位置:/usr/lib64/httpd/modules/ --實際路徑(可用)
5.網頁根路徑配置和ServerName
vim /etc/httpd/conf/httpd.conf主配置文件
由httpd主配置文件中的DocumentRoot 來定義
網頁的根路徑,默認在/var/www/html 也是在訪問URL地址的起始根路徑 /。
/ 代表網頁根路徑
292 DocumentRoot "/var/www/html" --指定網頁根路徑(可修改)
276 ServerName www.example.com:80 --設定網站的名稱 80端口可不加
6.編寫測試網站
vim /etc/httpd/conf/httpd.conf主配置文件
404 DirectoryIndex index.html index.html.var 因為這里指定了名稱首頁
所以就建立這個測試網站首頁文件
<body>
<h1>test</h1>
<p>web test</p>
</br>
<img src="welcome.jpg"></br>
<a href="http://www.baidu.com">www.baidu.com.com</a>
</body>
7.指定首頁 更改默認主頁面 啟動服務
vim /etc/httpd/conf/httpd.conf主配置文件
DirecotryIndex index.html index.html.var (html htm xhtml index.html.var) ----指定首頁(.php .jsp .py .cgi .perl)
8.網頁訪問 啟動服務 安裝網頁訪問軟件 在Linux內對WEB站點資源訪問的相關命令方式
curl查看源碼 elinks lynx 訪問網站
yum -y install lynx 安裝訪問網站的軟件
curl 請求資源的操作方法
curl [option] xxx.xxx.xxx.xxx[:80]
例如: curl 192.168.10.20
elinks 請求資源操作方法
elinks xxx.xxx.xxx.xxx [:80]
lynx xxx.xxx.xxx.xxx[:80]
lynx 192.168.10.20 --訪問網站
curl 192.168.10.20 查看源碼
在真機中訪問
9.設定默認的字符集
vim /etc/httpd/conf/httpd.conf 在主配置文件中
761 AddDefaultCharset UTF-8
設定默認字符集為支持中文編碼
10.目錄 路徑別名(請求的資源會自動進入服務器另外的網頁路徑)
vim /etc/httpd/conf/httpd.conf 在httpd 主配置文件中
給目錄起別名格式:
Alias /URL/ “/XXX/XXX/dir/”
Alias 給他起別名 /URL/ 根目錄下的URL 是 “/XXX/XXX/dir/”目錄
網站服務器真實存在的目錄
注意:最后面的路徑提示符要統一,要么都有,要么都沒有。
示例一:
Alias /bbs "/forum/htdocs"
<Directory "/forum/htdocs">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Require all granted
</Directory>
1.去修改配置文件增加別名
vim /etc/httpd/conf/httpd.conf
Alias /bbs "/var/www/html/bbs" bbs不存在但是指向后面的連接
<Directory "/var/www/html/bbs"> 對這個bbs目錄進行控管
Options Indexes FollowSymLinks MultiViews 顯示的選項
AllowOverride None --不進行權限的復寫
order allow,deny
allow from all --訪問的控制 allow all允許所有
</Directory>
上述別名的配置,就是說當你基於你的站點訪問http://ip/bbs目錄下的文件時,會直接從服務器/forum/htdocs目錄下訪問對應的文件。
cd /var/www/html/ mkdir bbs新建目錄
echo "bbs text" > index.html
重啟服務測試
/etc/init.d/httpd restart
2.真實機訪問
http://192.168.10.20/bbs
11.httpd的日志設定解讀(很重要)
1.)訪問日志(CustomLog)
主配置文件默認定義 在 cd /var/log/httpd/logs/access.log
有不同的定義格式,有combined(組合格式) common agent
訪問日志分析:%h--->請求資源客戶端的IP地址
%l---->遠程登陸的用戶名(大多數都是空,以-表示)
%u--->被認證登陸的用戶名
%t---->服務器收到請求的時間
%r---->請求報文的首行信息(method URL version)
%s---->響應請求的狀態碼
%b:響應報文的大小,不包括首部,以字節為單位
%{Referer}:請求報文當中的”referer”首部的值(首部字段Referer會告知服務器請求的原始資源的URI)
%{User-Agent}:請求報文中”User-Agent”首部的值,即發出請求用到的應用程序。即瀏覽器
cd /var/log/httpd/logs/access.log
tail -f /var/log/httpd/logs/access.log
192.168.10.20 - - [28/Oct/2019:22:37:54 +0800] "GET / HTTP/1.1" 200 173 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2"
日志解讀 access.log
192.168.10.20 --客戶IP地址
[28/Oct/2019:22:37:54 +0800] --時間
GET --獲取的方法
/ --獲取的內容 首頁
HTTP/1.1 --協議和版本
200 --狀態碼
curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2" --使用的瀏覽器 使用的客戶端程序
②錯誤日志(errorLog)
主配置文件中定義了其日志位置, cd /var/log/httpd/logs/error_log
錯誤日志規定了級別(LogLevel warn) 分別為dubug info notice warn error crit alert emerg
錯誤日志 errorLog
7debug 用來debug (除錯) 時產生的訊息數據;
6 info 僅是一些基本的訊息說明而已;
5. notice 雖然是正常信息,但比info還需要被注意到的一些信息內容;
4 warning (warn ) 警示的訊息,可能有問題,但是還不至於影響到某個daemon運行的信息;基本上,info, notice, warn這三個訊息都是在告知一些基本信息而已,應該還不至於造成一些系統運行困擾;
3err (error) 一些重大的錯誤訊息,例如配置文件的某些設置值造成該服務
服法啟動的信息說明,通常借由err的錯誤告知,應該可以了解到該服務無法啟動的問題呢!
2.crit 比error還要嚴重的錯誤信息,這個crit是臨界點( critical)
的縮寫,這個錯誤已經很嚴重了喔!
1. alert 警告警告,已經很有問題的等級,比crit還要嚴重!
0 emerg ( panic) 疼痛等級,意指系統已經幾乎要死機的狀態!很嚴重的錯誤信息了。通常大概只有硬件出問題,導致整個核心無法順利運行,就會出現這樣的等級的訊息吧!
2.httpd 案例 網頁查看圖片 設置持久連接數等
1.)yum 安裝 httpd服務
yum -y install httpd
2.)編寫網頁,訪問自己的IP地址,顯示自己編輯的HTML的內容
編寫網頁,要求直接訪問自己的IP地址,即可出現自己編寫的Html頁面index.html:
vim /var/www/html/index.html
<body>
<h1>test</h1>
<p>web test</p>
</br>
<img src="welcome.jpg"></br>
<a href="http://www.baidu.com">www.baidu.com.com</a>
</body>
啟動服務
service httpd restart
3.)在真機中訪問,
http://192.168.10.20 可以點擊下面的百度網站
4.)更改域名,增加監聽端口
將httpd服務器的域名設置為www.ujiuye.com,
並使其除了監聽自己默認的80端口外,還額外監聽在8080端口上。
ServerName www.ujiuye.com:80
137 Listen 192.168.10.20:80 監聽的端口
138 Listen 80
139 Listen 8080
重啟
/etc/init.d/httpd restart
service httpd restart
然后作本機的測試
因為沒有DNS 所以使用本機指定解析
vim /etc/hosts 這樣就解析出ujiuye是10.20
本機linux測試
lynx www.ujiuye.com
5更改進程運行模式為MPM模式,查看httpd驗證
將httpd程序運行模式改為MPM模式,並查看httpd進程進行驗證。
vim /etc/sysconfig/httpd
HTTPD=/usr/sbin/httpd.worker解開或者寫入
注意:yum -y install php-zts-5.3.3-47.el6.x86_64
然后重啟 查看進程
/etc/init.d/httpd restart
service httpd restart
ps -aux | grep http
6.)更改網頁路徑.
vim /etc/httpd/conf/httpd.conf主配置文件
更改網頁根路徑為/doc/www/html/下,並進行訪問。
DocumentRoot "/doc/www/html" ---指定根目錄,沒有要新建
DocumentRoot --指定網站根目錄 注意寫的時候的標簽對
加入內容
<Directory "/doc/www/html">
Options Indexes FollowSymLinks
Order allow,deny
Allow from all
</Directory>
解讀文件
Options ---目錄顯示屬性的設置
Indexes ---如果這個目錄下沒有找到doc/www/html這個網站的話,就把這個目錄的內容列表一下
FollowSymLinks ---這個目錄里的軟連接是可以失效的
Allow from all ---所有人都可以訪問
<Directory "/doc/www/html">
</Directory> -標簽對--通過標簽對來進行訪問控制
配置好后 重啟服務
service httpd restart
客戶端登錄查看
7.)設置持久連接和最大連接數,超時時間
打開持久連接,設置最大連接數為50,超時時間為2s
76 KeepAlive On --是否開啟持久連接以及設置連接超時
83 MaxKeepAliveRequests 100 --一次連接可完成100次的連接 最大連接數
89 KeepAliveTimeout 15 --兩次時間請求間隔超時 15s則斷開
#超時時間為15s,單位默認為s
8.目錄別名 網頁制作小技巧
vim /etc/httpd/conf/httpd.conf修改主配置文件
Alias /jxj "/doc/www/html/bbs"
<Directory "/doc/www/html/bbs">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
order allow,deny
allow from all
</Directory>
解讀
Alias /jxj 網站后面加別名 實際位置是 /doc/www/html/bbs
創建別名網站這個文件
cd /doc/www/html/jxj
vim index.html
寫入 I love you jing
網頁制作小技巧
標題標簽:<h1>---<h6> h1字號最大,h6字號最小。
段落標簽:<p></p> 換行標簽:</br> 范圍標簽<span></span>
圖像標簽<img> 超鏈接標簽<a href=”http://xxx/xxx/xxx”> HIT</a>
特殊符號: (空格符號) "(引號”) ©(公司符號)
使其顯示圖片和文字
在/doc/www/html/bbs 新建測試網站:index.html
在其中寫入圖片的名稱(圖片也在bbs目錄下)
Jxj相當於軟連接 指向的是/doc/www/html/bbs 文件目錄里的initial.html
3.理論:
1.)HTTP(超文本傳輸協議)基礎:
屬於應用層協議,目前主要實現網頁共享和通信。
網頁:純文本文件,編寫的基本語言為html,被客戶端瀏覽器翻譯成網頁形式顯示出來。
http:hyper text transfer protocol
html:超文本標記語言,屬於一種標記語言(網頁源碼)。
CSS:Cascading Style Sheet(層級樣式表,定義頁面格式)
js:腳本編程語言,工作在客戶端。
2.)HTML文檔結構:
頭部部分
標題部分
主體部分
網頁內容:文本、圖像
3.)網頁基本標簽
①頭部部分:網頁摘要信息,便於瀏覽器解析和搜索引擎搜索。
<title>標簽 針對搜索引擎的搜索或更新頻度的關鍵詞。
例如:
<head>
<title> 我的測試網頁 </title>
</head>
②主體部分
標題標簽:<h1>---<h6> h1字號最大,h6字號最小。
段落標簽:<p></p> 換行標簽:</br> 范圍標簽<span></span>
圖像標簽<img> 超鏈接標簽<a href=”http://xxx/xxx/xxx”> HIT</a>
特殊符號: (空格符號) "(引號”) ©(公司符號)
例如:
<body>
<h1>這是一級標簽</h1>
<h2>這是二級標簽</h2>
<p>這是一個段落</p>
測試換行</br>
<span>范圍測試
范圍測試</span>
<img src=”/xxx/xxx/xxx.jpg”/>
<a href=”http://www.ujiuye.com”> 優就業IT教育</a>
"aaa" bbb<br />Ujiuye.Inc
</body>
4.)http的工作原理
http請求流程:主要實現跨主機發送文檔,客戶端基於瀏覽器向服務端獲取文檔,文檔在服務器的某個路徑之中,
服務端此時監聽在套接字上,服務器接受請求,分析文檔是否存在,如果存在,從磁盤取到資源取到進程(網站服務程序進程)之中,封裝成HTML的響應報文返回給客戶端並在瀏覽器上顯示。
5.)WEB資源:
WEB內容的重要組成部分,是客戶端基於HTTP協議可以調用的服務器的相關資源。WEB資源分為靜態資源(文件)和動態資源(文件)
WEB靜態資源:服務器端的WEB資源,不會發生變化,不需要在服務器上進行執行的資源,原路返回發還給客戶端
例如:.html .jpg .gif .txt .js .css .mp4 .avi 。。。
WEB動態資源:服務端的web動態資源,瀏覽器無法直接解析,需要在服務端進行執行一次,才發還給客戶端的資源。
例如:.php .jsp .cgi ......
6.)MIME
(Multipurpose Internet Mali Extension,多用途英特網郵件擴藏)媒體類型:(使用不同的編碼方式進行編碼)
格式: major/minor,大類/子類
text/html ---文本/標簽
text/Plain ---文本/普通文本
image/jpg
image/gif ......
因特網上有數千種不同類型的數據,HTTP仔細地給每種要通過web傳輸的對象都打上了名為MIME類型(MIME type)的數據格式標簽,Web 服務器會為所有 HTTP 對象數據附加一個 MIME 類型。當 Web 瀏覽器從服務器中取回一個對象時,會去查看相關的 MIME 類型,看看它是否知道應該如何處理這個對象。大多數瀏覽器都可以處理數百種常見的對象類型:顯示圖 片文件、解析並格式化 HTML 文件、通過計算機聲卡播放音頻文件,或者運行外部插件軟件來處理特殊格式的數據。
MIME 類型是一種文本標記,表示一種主要的對象類型和一個特定的子類型,中間由一條斜杠來分隔。
1.HTML 格式的文本文檔由 text/html 類型來標記
2.普通的 ASCII 文本文檔由 text/plain 類型來標記
3.JPEG 版本的圖片為 image/jpeg 類型
4.GIF 格式的圖片為 image/gif 類型
5.Apple 的 QuickTime 電影為 video/quicktime 類型
6.微軟的 PowerPoint 演示文件為 application/vnd.ms-powerpoint 類型
7.)資源標識定位符
資源標識符--->URI,統一資源標識符用於標示一個抽象或者物理資源,相當於名稱,由三部分組成:訪問資源的命名機制,存放資源的主機名,資源自身的名稱,由路徑表示
資源定位符--->URL (服務器地址ip:port)統一資源定位符用於標示網絡資源的位置,由三部分組成:第一部分是協議(或稱為服務方式);第二部分是存有該資源的主機IP地址(有時也包括端口號);第三部分是主機資源的具體路徑。
每個URL都必須從以下命名機制開始:ftp、http、https、gopher、mailto、news、nntp、telnet、wais、file或prospero。如果不是以此開頭,則不是URL。
8.)PV .UV,AC.IV概念
PV:page view(一次頁面的訪問) 即頁面訪問量,每打開一次頁面PV計數+1,刷新頁面也是。包括全站PV,首站PV等
UV:user view (多少用戶訪問過,跟頁面數量多無關,表現為用戶活躍度,一台電腦終端為一個訪客)
AC:Active connection 活動連接數,當前在使用的活動的連接數
IV:是IP訪問數指獨立IP訪問數,一個獨立的IP在一個計算時段內訪問網站計算為1次IP訪問數。在同一個計算時段內不管這個IP訪問多少次均計算為1次。計算時段有以1天為一個計算時段,也有以1個小時為一個計算時段。
qps:每秒查詢數 並發/響應
9.)WEB服務並發響應模型(web的I/O模型)
並發的概念:多個客戶端同時請求服務器的資源,服務端進行資源I/O響應。
①:單進程I/O結構,一個進程處理一次請求,多個請求需串行響應。(排隊)
②:多進程I/O結構--->啟動多個進程,一個進程處理一個請求,多個進程同時進行處理請求。
注意:多進程I/O結構缺點:進程啟動太多,會造成大量進程間切換,消耗大量的內存資源。
多進程I/O結構優點:進程之間互相不影響。
③:復用I/O結構:多路I/O處理器完成I/O復用,實現一個進程響應多個用戶請求。
單個進程響應多個請求的實現方式:
1.) 多線程方式 一個進程生成多個線程,一個線程響應一個請求。
2.) 事件驅動方式,當web server接收到請求,就把他扔到一個隊列中然后在繼續響應請求。在隊列中准備就緒后,服務器在把結果發送給客戶端。
④:復用多進程I/O結構:啟動多個進程,每個進程響應多個請求。
10.)HTTP協議版本:
HTTP 0.9版本 最初版本,已棄用
HTTP 1.0版本 最初廣泛使用版本,支持多媒體資源,但是對緩存支持很差
HTTP 1.1版本 當前主流版本,增強了緩存功能。
HTTP 2.0版本 當前沒有主流使用的版本,但功能強大。
11.)HTTP請求細節:(報文)
細分為:①:建立、處理連接(是否接受或拒絕)
②:接受請求
③:處理請求
④:訪問資源
⑤:構建響應報文
⑥:發送響應報文
⑦:記錄日志
處理請求:對請求報文進行解析,並獲取請求資源和請求方法相關信息
請求報文首部:
GET /my_view_page.php HTTP/1.1 --網址網頁指定根目錄
Host: 10.0.17.183:8000
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
(KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Referer: http://10.0.17.183:8000/my_view_page.php
Accept-Encoding: gzip, deflate, sdch
訪問資源:獲取http報文中請求指定的資源(存放在httpd服務器中,提供資源--->包括靜態資源和動態資源,
在本地文件系統某個路徑,此路徑叫網頁根路徑--->會有多種路徑映射)
構建響應報文:服務端將資源封裝成響應報文,需要進行分類,明確標記資源類型。
資源訪問可能會基於URL重定向方式進行響應(非客戶端的請求資源,而是另一個訪問路徑)
發送響應報文:把構建的報文發送給請求方
記錄日志:(同時方便分析客戶行為需求)
12.)http協議的軟件程序解決方案
靜態資源請求WEB服務器程序
①:httpd(apache)
②:nginx
③:lighttpd
動態資源:
IIS
tomcat jboss jetty 輕量級
weblogic webshpere 企業級重量級
市場份額WEB服務器領域數據分析網站:https://news.netcraft.com/
http軟件(apache)的詳細介紹和安裝(centos-6和centos-7)
apache有apache軟件基金會提供,屬於開源軟件,在當今主要的web服務器領域是絕對的龍頭老大。
apache程序在系統中命名---->httpd
13.)httpd程序的特點(工作模式)
高度模塊化的設計:httpd內核+模塊(modules)
DSO:動態共享對象,裝載器根據當前地址空間的空閑情況,動態分配一塊足夠大小的虛擬地址空間給相應的共享對象
MPM:多路訪問模塊(多種不同的I/O模型,包括prefork模型,worker模型,event模型)
1.prefork:多進程模型,每個進程響應一個請求。一個主進程(監聽套接字),負責生成n個子進程,子進程為工作進程,沒有用戶請求,也會生成空閑進程,等待請求達到。最大不超過1024個進程。
2.worker:多線程模型(多進程生成,一個進程生成多個線程),一個線程響應一個請求
3.event:事件驅動模型,一個進程響應多個請求。(httpd-2.2屬於試驗階段,httpd-2.4生產環境已大規模使用)
14.)URI
<1>什么是URI
URI,通一資源標志符(Uniform Resource Identifier, URI),表示的是web上每一種可用的資源,如 HTML文檔、圖像、視頻片段、程序等都由一個URI進行定位的。
<2>URI的結構組成
URI通常由三部分組成:
①訪問資源的命名機制;
②存放資源的主機名;
③資源自身的名稱。
<3>URI舉例
如:https://blog.csdn.net/qq_32595453/article/details/79516787
我們可以這樣解釋它:
①這是一個可以通過https協議訪問的資源,
②位於主機 blog.csdn.net上,
③通過“/qq_32595453/article/details/79516787”可以對該資源進行唯一標識(注意,這個不一定是完整的路徑)
二、URL
URL是URI的一個子集。它是Uniform Resource Locator的縮寫,譯為“統一資源定位 符”。
通俗地說,URL是Internet上描述信息資源的字符串,主要用在各種WWW客戶程序和服務器程序上。
采用URL可以用一種統一的格式來描述各種信息資源,包括文件、服務器的地址和目錄等。
URL的一般格式為(帶方括號[]的為可選項):
protocol :// hostname[:port] / path / [;parameters][?query]#fragment
URL的格式由三部分組成:
①第一部分是協議(或稱為服務方式)。
②第二部分是存有該資源的主機IP地址(有時也包括端口號)。
③第三部分是主機資源的具體地址,如目錄和文件名等。
第一部分和第二部分用“://”符號隔開,
第二部分和第三部分用“/”符號隔開。
第一部分和第二部分是不可缺少的,第三部分有時可以省略。
三、URI和URL之間的區別
從上面的例子來看,你可能覺得URI和URL可能是相同的概念,其實並不是,URI和URL都定義了資源是什么,但URL還定義了該如何訪問資源。URL是一種具體的URI,它是URI的一個子集,它不僅唯一標識資源,而且還提供了定位該資源的信息。URI 是一種語義上的抽象概念,可以是絕對的,也可以是相對的,而URL則必須提供足夠的信息來定位,是絕對的。
URL 和 URI 區別
本文我們討論URL 和 URI 的主要區別,並通過示例說明這些差異。
URL 和 URI
直接差異來自其定義:
Uniform Resource Identifier (URI) − 對任何抽象或物理資源進行完整標識的字符序列。 Uniform
Resource Locator (URL) − 除了標識資源可用的位置之外,URI的一個子集描述了訪問該資源的主要機制。
現在我們可以得出結論:每個URL都是一個URI,后面我們會看到情況並非如此。
語法
所有URI,不管其是否為URL,需遵循形式:
scheme:[//authority][/path][?query][#fragment]
1
每部分描述如下:
scheme − 對於 URL, 是訪問資源的協議名稱;對其他URI,是分配標識符的規范的名稱
authority − 可選的組成用戶授權信息部分,主機及端口(可選)
path − 用於在scheme和authority內標識資源
query − 與路徑一起的附加數據用於標識資源。對於url是查詢字符串
fragment − 資源特定部分的可選標識符
為了方便地識別特定的URI是否是URL,我們可以檢查它的scheme。每個URL都必須從以下scheme開始:ftp、http、https、gopher、mailto、news、nntp、telnet、wais、file或prospero。如果不是以此開頭,則不是URL。
現在我們已經了解了語法,讓我們看一些示例。下面是uri列表,其中只有前三個是url:
ftp://ftp.is.co.za/rfc/rfc1808.txt
https://tools.ietf.org/html/rfc3986
mailto:john@doe.com
tel:+1-816-555-1212
urn:oasis:names:docbook:dtd:xml:4.1
urn:isbn:1234567890