一:web基礎
1.域名和DNS
1.1域名的概念
網絡是基于TCP/IP協議進行通信和連接的,每一臺主機都有一個唯一的標識(固定的IP地址),用以區別在網絡上成千上萬個用戶和計算機。網絡在區分所有與之相連的網絡和主機時,均采用一種唯一、通用的地址格式,即每一個與網絡相連接的計算機和服務器都被指派一個獨一無二的地址。
為了保證網絡上每臺計算機的IP地址的唯一性,用戶必須向特定機構申請注冊,分配IP地址。網絡中的地址方案分為兩套:IP地址系統和域名地址系統。這兩套地址系統其實是一一對應的關系。IP地址用二進制數來表示,每個IP地址長32比特,由4個小于256的數字組成,數字之間用點間隔,例如 100.10.0.1表示一個P地址。由于IP地址是數字標識,使用時難以記憶和書寫,因此在IP地址的基礎上又發展出一種符號化的地址方案,來代替數字型的IP地址。每一個符號化的地址都與特定的IP地址對應,這樣網絡上的資源訪問起來就容易得多了
(1)域名的結構
DNS 規定,域名中的標號都由英文字母和數字組成,每一個標號不超過 63個字符, 也不區分大小寫字母。標號中除連字符(-)外不能使用其他的標點符號。級別最低的域名寫在最左邊,而級別最高的域名寫在最右邊。
(2)域名結構類型
根域:指的是根服務器,要用來管理互聯網的主目錄,全世界只有13臺。1個為 主根服務器,放置在美國。其余 12個均為輔根服務器,所有根服務器均由美國政府授權的互聯網域名與號碼分配機構ICANN 統一管理,負責全球互聯網域名根服務器、 域名體系和 IP 地址等的管理。
頂級域:包括組織域和國家/地區域名。域名的最右側是國家/地區域名,國家代碼 由兩個字母組成的如.cn,.uk,.de 和.jp, 其中.cn 是中國專用的頂級域名。在國家/地區域名左側,是組織域名,常見的.com 用于商業機構,.net用于網絡組織,.org 用于各種組織包括非盈利組織。
二級域名:在頂級域名之前的域名,在頂級域名前面,它是指域名注冊人的網
上名 稱,例如 baidu,ibm ,yahoo , microsoft 等。
FQDN:是主機名.DNS 后綴,是指主機名加上全路徑,全路徑中列出了序列中所有 域成員。全域名可以從邏輯上準確地表示出主機在什么地方,也可以說全域名是主機名的一種完全表示形式。
2.Hosts文件
Hosts 文件是一個用于存儲計算機網絡中節點信息的文件,它可以將主機名映射到 相應的 IP 地址,實現 DNS 的功能,它可以由計算機的用戶進行修改控制。
(1)Hosts文件作用
在網絡上訪問網站,要首先通過 DNS 服務器把要訪問的域名解析成 IP 地址后,計 算機才能對這個網絡域名作網站進行訪問。在網絡上訪問網站,要首先通過 DNS 服務器把要訪問的域名解析成 IP 地址后,計算機才能對這個網絡域名作網站進行訪問。
因為DNS 做域名解析和返回 IP 都需要時間。為了提高對經常訪問的 網絡域名的解析效率,可以通過利用在 Hosts 文件中建立域名和IP的映射關系來達到目的
在進行DNS請求以前,系統會先檢查自己的 Hosts 文件中是否 有這個網絡域名映射關系。如果有則調用這個IP 地址映射,如果沒有,再向已知的 DNS 服務器提出域名解析,即 Hosts 的請求級別比 DNS 高
(2)修改hosts文件
Windows 系統中 Hosts 文件存儲在目錄 c:\windows\system32\drivers\etc下面,用 記事本可以對其進行修改,0penEuler 系統中 Hosts 文件存儲在目錄/etc/目錄下面,用 vim /etc/hosts 可以對其進行修改。
3.DNS
主機名到 IP 地址的映射有兩種方式:
靜態映射:每臺設備上都配置主機到IP地址的映射,各設備獨立維護自己的映射 表,而且只供本設備使用;
動態映射:建立一套域名解析系統(DNS),只在專門的DNS服務器上配置主機 到IP地址的映射,網絡上需要使用主機名通信的設備,首先需要到 DNS服務器查詢主機所對應的 IP 地址。
4.域名注冊
域名注冊是 Internet 中用于解決地址對應問題的一種方法。域名注冊遵循先申請先注冊原則,管理機構對申請人提出的域名是否違反了第三方的權利不進行任何實質審 查。每個域名都是獨一無二的,不可重復的。
域名注冊的所有者都是以域名注冊提交人填寫域名訂單的信息為準的,成功24 小時后,即可在國際(ICANN)、國內(CNNIC)管理機構査詢 whois 信息(域名所有 者等信息)。
下面是域名注冊步驟:
(1)準備申請資料:com 域名無需提供身份證、營業執照等資料,cn 域名已開放 個人申請注冊,所以申請則需要提供身份證或企業營業執照;
(2)尋找域名注冊網站:由于.com、.cn 域名等不同后綴均屬于不同注冊管理機構 所管理,如要注冊不同后綴域名則需要從注冊管理機構尋找經過其授權的頂級域名注冊
服務機構。如 com 域名的管理機構為 ICANN,cn 域名的管理機構為CNNIC(中國互 聯網絡信息中心)。若注冊商已經通過 ICANN、CNNIC雙重認證,則無需分別到其他 注冊服務機構申請域名;
(3)查詢域名:在域名注冊查詢網站注冊用戶名成功后并查詢域名,選擇要注冊的 域名,并點擊注冊;
(4)正式申請:查到想要注冊的域名,并且確認域名為可申請的狀態后,提交注冊, 并繳納年費;
(5)申請成功:正式申請成功后,即可開始進入 DNS 解析管理、設置解析記錄等 操作。
二:網頁與HTML
網頁是構成網站的基本元素,是承載各種網站應用的平臺。通俗地說,網站就是由 網頁組成的。如果只有域名和虛擬主機而沒有制作任何網頁,那么客戶仍舊無法訪問這 個網站。因為網頁是由 HTML(超文本標記語言)編寫的。
1.網頁概述
網頁是一個文件,他存放在世界某個角落的某一部計算機中,而這部計算機必須是 與互聯網相連的。網頁經由網址(URL)來識別與存取,是互聯網中的一“頁”。
網頁可以包括如下內容:
- 文本:文本是網頁上最重要的信息載體與交流工具,網頁中的主要信息般都以文 本形式為主。
- 圖像:圖像元素在網頁中具有提供信息并展示直觀形象的作用。靜態圖像:在頁面中可能是圖片或矢量圖形。圖片格式通常為GIFJPEG 或 PNG 等;矢量格式通常為 SVG 或 Flash。動畫圖像:通常動畫為 GIF 和 SVG
- Flash 動畫:動畫在網頁中的作用是有效地吸引訪問者更多的注意。
- 聲音:聲音是多媒體和視頻網頁重要的組成部分。
- 視頻:視頻文件的采用使網頁效果更加精彩且富有動感
- 表格:表格是在網頁中用來控制頁面信息的布局方式。
- 導航欄:導航欄在網頁中是一組超鏈接,其連接的目的端是網頁中重要的
頁面。 - 交互式表單:表單在網頁中通常用來聯接數據庫并接受訪問用戶在瀏覽器端輸入的 數據,利用數據庫為客戶端與服務器端提供更多的互動。
網頁相關概念如下:
- 域名:是瀏覽網頁時輸入的網址。
- HTTP:用來傳輸網頁的通信協議,使用瀏覽器訪問網址時,在域名前面要加上 http:// ,表示使用 http 協議傳輸網頁。
- URL:是一種萬維網尋址系統,表示網絡上資源的位置路徑。
- HTML:是編寫網頁的超文本標記語言。
- 超鏈接:具備將網站中不同網頁鏈接起來的功能。
- 發布:將制作好的網頁上傳到服務器供用戶訪問的過程
2.1HTML概述
HTML, 叫做超文本標記語言,是一種規范,也是一種標準,它通過標記符號來標記 要顯示的網頁中的各個部分。網頁文件本身是一種文本文件,通過在文本文件中添加標 記符,可以告訴瀏覽器如何顯示其中的內容。如:文字如何處理,畫面如何安排,圖片 如何顯示等。瀏覽器按順序閱讀網頁文件,然后根據標記符解釋和顯示其標記的內容,對書寫出錯的標記將不指出其錯誤,且不停止其解釋執行過程,開發者只能通過顯示效果來分析出錯原因和出錯部位。但需要注意的是,不同的瀏覽器,對同一標記符可能會有不完全相同的解釋,因而可能會有不同的顯示效果。
HTML 文件可以使用任何能夠生成 txt 文件的文本編輯器來編輯,生成超文本標記 語言文件,只用修改文件名后綴為”.html”或“.htm” 即可。
2.2HTML基本標簽
(1)HTML語法規則
HTML 標簽采用雙標記符的形式,前后標記符對應,分別表示標記開始和結束,標記符中間的內容被標簽描述。前標記符由“<XXX>”表示,結尾標記符多了一個“/”,由 “</XXX>”表示。
(2)HTML 文件結構
HTML 文件最外層由<html></htm>表示,說明該文件是用 HTML 語言描述的。在它里面是并列的頭標簽(<head>)和內容標簽(<body>),最基本的 HTML 文件結構如下:
常用的頭標簽:
標簽 | 描述 |
<title> | 定義了文檔的標題 |
<base> | 定義了頁面鏈接標簽的默認鏈接地址 |
<link> | 定義了一個文檔和外部資源之間的關系 |
<meta> | 定義了HTML文檔中的元數據 |
<script> | 定義了客戶端的腳本文件 |
<style> | 定義了HTML文檔的樣式文件 |
內容標簽中常用的標簽表:
標簽 | 描述 |
<table> | 定義一個表格 |
<tr> | 定義了表格中的一行 |
<td> | 定義了表格中某一行的一列 |
<a> | 定義了一個超鏈接 |
<br> | 定義了換行 |
<font> | 定義了字體 |
2.3網站和主頁
網站是由網頁組成的,包含多個網頁頁面,具有獨立域名、獨立存放空間的內容集 合,這些內容可能是網頁,也可能是程序或其他文件。
主頁(首頁)是用戶打開瀏覽器時默認打開的網頁。
3.靜態網頁與動態網頁
3.1靜態網頁
在網站設計中,純粹 HTML, 格式的網頁通常被稱為“靜態網頁”,靜態網頁是標準的 HTML 文件,它的文件擴展名是.htm、.html 。靜態網頁是網站建設的基礎,早期的網 站一般都是由靜態網頁制作的。靜態網頁也可以出現各種動態的效果,如.GIF 格式的動畫、FLASH 、滾動字幕等。這些“動態效果” 只是視覺上的,與下面將要介紹的動態網頁 是不同的概念。
3.2動態網頁
所謂的動態網頁,是指跟靜態網頁相對的一種網頁編程技術。靜態網頁,隨著 HTML 代碼的生成,頁面的內容和顯示效果就基本上不會發生變化了--除非是修改頁面代
碼。而動態網頁則不然,頁面代碼雖然沒有變,但是顯示的內容卻是可以隨著時間、環境或者數據庫操作的結果而發生改變的。動態網頁URL的后綴不是·htm、.html、.shtml、.xml 等靜態網頁的常見網頁制作格式,而是以.aspx、.asp、·jsp、·php、·perl 、.cgi 等形式為后綴,并且在動態網頁網址中有一個 標志性的符號--“?”動態網頁是基本的 html 語法規范與 Java、PHP、C#等高級程序設計語言、數據庫 編程等多種技術的融合,以期實現對網站內容和風格的高效、動態和交互式的管理。因 此,從這個意義上來講,凡是結合了 HTML 以外的高級程序設計語言和數據庫技術進行 的網頁編程技術生成的網頁都是動態網頁。
三:HTTP協議
超文本傳輸協議(HTTP ,HyperText Transfer Protocol)是互聯網上應用最廣泛的一種網絡協議。所有的網頁文件都必須遵守這個標準。設計HTTP最初的目的是為 了提供一種發布和接收 HTML 頁面的方法。
1.HTTP協議概述
HTTP 協議采用了請求/響應模型。客戶端向服務器發送一個請求,請求頭包含請求 的方法、URL、協議版本、以及包含請求修飾符、客戶信息和內容的類似于 MIME 的消 息結構。服務器以一個狀態行作為響應,響應的內容包括消息協議的版本,成功或者錯 誤編碼加上服務器信息、實體元信息以及可能的實體內容。
HTTP 已經演化出了很多版本,它們中的大部分都是向下兼容的。
(1)HTTP/0.9 已過時。只接受 GET 一種請求方法,沒有在通訊中指定版本號且不支持請求頭。由于該版本不支持POST方法,所以客戶端無法向服務器傳遞太多 信息。
(2)HTTP/1.0 這是第一個在通訊中指定版本號的 HTTP 協議版本,至今仍被廣泛 采用,特別是在代理服務器中。
(3)HTTP/1.1 當前版本。持久連接被默認采用,并能很好地配合代理服務器工作。還支持以管道方式同時發送多個請求,以便降低線路負載,提高傳輸速度。
2.HTTP方法
HTTP 支持幾種不同的請求命令,這些命令被稱為 HTTP 方法(HTTP method)。每條 HTTP 請求報文都包含一個方法,告訴服務器要執行什么動作,包括:獲取一個頁 面,運行一個網關程序,刪除一個文件等。最常用的獲取資源的方法是 GET、POST 。 HTTP 常用方法如表 1-3 所示。
HTTP 方法 | 描述 |
GET | 請求獲取 Request-URI 所標識的資源 |
PUT | 請求服務器存儲一個資源,并用Request-URI 作為其標識 |
DELETE | 請求服務器刪除 Request-URI 所標識的資源 |
POST | 在 Request-URI 所標識的資源后附加新的數據 |
HEAD | 請求獲取由 Request-URI 所標識的資源的響應消息報頭 |
GET 方法采用的是 URL 后綴的形式,比如 http://www.test.com/a.php?Id=123 就是一個 GET 請求,服務器接收后可以解析出 Id=123 。而 POST 方法不需要在 URL 中 顯示”?Id=123”,參數作為內容進行了隱藏的提交。因此,表單類或者有用戶名、密碼 等內容提交時建議使用 POST 方法。
GET 方法在 URL 上顯示參數,而 URL 是有長度限制,故不適合提交過大的數據。 GET方法可以被瀏覽器緩存,當請求已經被請求過一次的 URL時,瀏覽器不需要向服 務器再次發出請求,直接在本地緩存中獲得頁面。GET 和 POST方法對比如表 1-4 所示。
GET 方法 | POST 方法 | |
對數據長度的限制 | URL 的長度是受限制的(URL 的最大長度是2048個字符) | 無限制 |
緩存 | 能被緩存 | 不能緩存 |
安全性 | 與POST 相比,GET 的安全性較差,因 為所發送的數據是URL的一部分。在發送密碼或其他敏感信息時絕不要使用GET | POST 比GET更安全,因為參數不會被保存在瀏覽器歷史或Web 服務器日志中 |
歷史 | 參數保留在瀏覽器歷史中 | 參數不會保存在瀏覽器歷史中 |
后退按鈕/刷新 | 無害 | 數據會被重新提交,瀏覽器應 該告知用戶數據會被重新提交 |
書簽 | 可收藏為書簽 | 不可收藏為書簽 |
3.HTTP狀態碼
HTTP 狀態碼(HTTP Status Code )是用以表示網頁服務器 HTTP 響應狀態的 3 位數字代碼,當瀏覽器請求某一URL 時,服務器根據處理情況返回相應的處理狀態。
HTTP 狀態碼可以分為五大類,如圖 1.2所示。其中 1XX 表示信息提示,2XX、3XX表示請求正常,4XX、5XX 表示出現異常情況。
狀態碼首位 | 已定義范圍 | 分類 |
1xx | 100-101 | 信息提示 |
2xx | 200-206 | 成功 |
3xx | 300-305 | 重定向 |
4xx | 400-415 | 客戶端錯誤 |
5xx | 500-505 | 服務端錯誤 |
生產環境常見的HTTP狀態碼
消息 | 描述 |
200 OK | 請求成功 |
301?Moved Permanently | 請求的永久頁面跳轉 |
403 Forbidden | 禁止訪問該頁面 |
404 Not Found | 服務器無法找到被請求的頁面 |
500 Internal ServerError | 內部服務器錯誤 |
502 Bad Gateway | 無效網關 |
503 Service Unavailable | 當前服務不可用 |
504 Gateway Timeout | 網關請求超時 |
4.HTTP請求流程
1.請求報文
- 請求行:請求行由請求方法、URL以及協議版本三部分組成。
- 請求頭:請求頭為請求報文添加了一些附加信息,由“名/值”對組成,每行一對,名 和值之間使用冒號分隔,常用的請求頭如表 1-6 所示。
請求頭 | 描述 |
Host | 接受請求的服務器地址,可以是IP:端口號,也可以是域名 |
User-Agent | 發送請求的應用程序名稱, |
Connection | 指定與連接相關的屬性,如Connection:Keep-Alive |
Accept-Charset | 通知服務端可以發送的編碼格式 |
Accept-Encoding | 通知服務端可以發送的數據壓縮格式 |
Accept-Language | 通知服務端可以發送的語言 |
- 空行:請求頭部的最后會有一個空行,表示請求頭部結束,接下來為請求體,這一 行非常重要,必不可少。
- 請求體:請求體是請求提交的參數,GET方法已經在URL中指明了參數,所以提交時沒有數據。POST 方法提交的參數在請求體中。
2.響應報文
- 狀態行:狀態行由協議版本,狀態碼,狀態碼描述三部分組成。
- 響應頭與請求頭部類似,為響應報文添加了一些附加信息。常見響應頭部如表所示。
響應頭 | 描述 ? |
Server | 服務器應用程序軟件的名稱和版本 |
Content-Type | 響應正文的類型(是圖片還是二進制字符串) |
Content-Length | 響應正文長度 |
Content-Charset | 響應正文使用的編碼 |
Content-Encoding | 響應正文使用的數據壓縮格式 |
Content-Language | 響應正文使用的語言 |
- 空行:響應頭部的最后會有一個空行,表示響應頭部結束。
- 響應體:服務器返回的相應 HTML 數據,瀏覽器對其解析后顯示頁面。
四:nginx網站服務
一:Nginx服務基礎
Nginx(發音為[engine x])專為性能優化而開發,其最知名的優點是它的穩定性和低系統資源消耗,以及對 HTTP并發連接的高處理能力(單臺物理服務器可支持 30000~50000個并發請求)。
作為現代架構的中樞神經,Nginx在電商秒殺、流媒體分發、微服務網關等場景展現獨特價值:通過加權輪詢/最少連接等智能算法實現毫秒級負載均衡,借助動靜分離策略將靜態資源響應速度提升 3倍以上,結合 Lua 腳本擴展可構建毫秒級 WAF 防護。典型案例包括 Netflix每日 PB 級視頻流量調度、Twitter 億級消息推送的連接管理,其輕量化特性更在物聯網領域支持百萬設備并發通信,正因為如此,大量提供社交網絡、新聞資訊、電子商務及虛擬主機等服務的企業紛紛選擇 Nginx 來提供 Web 服務。本節將介紹 Nginx 的安裝配置方法。
1.nginx安裝及運行控制
Nginx 安裝文件可以從官方網站 http://www.nginx.org/下載。下面以穩定版 Nginx1.12.0為例,介紹 Nginx 的安裝和運行控制。
1.1編譯安裝 Nginx
(1)安裝支持軟件
Nginx 的配置及運行需要 pcre、zlib 等軟件包的支持,因此應預先安裝這些軟件的開發包(devel),以便提供相應的庫和頭文件,確保 Nginx 的安裝順利完成。
(2)創建運行用戶、組和日志目錄
Nginx 服務程序默認以 nobody 身份運行,建議為其創建專門的用戶賬號,以便更準確地控制其訪問權限,增加靈活性、降低安全風險。例如,創建一個名為 nginx 的用戶,不建立宿主文件夾,也禁止登錄到Shell 環境。
(3)編譯安裝 Nginx
配置 Nginx 的編譯選項時,將安裝目錄設為/usr/local/nginx,運行用戶和組均設為 nginx;啟用 http stub status module 模塊以支持狀態統計,便于查看服務器的連接信息。具體選項根據實際需要來定,配置前可參考“./configure --help”給出的說明。
為了使 Nginx 服務器的運行更加方便,可以為主程序 nginx 創建鏈接文件,以便管理員直接執行“nginx”命令就可以調用 Nginx 的主程序。
- conf:保存 nginx 所有的配置文件,其中 nginx.conf 是 nginx 服務器的最核心最主要的配置文件
- html:目錄中保存了 nginx 服務器的 web 文件,但是可以更改為其他目錄保存 web 文件
- logs:用來保存 nginx 服務器的訪問日志錯誤日志等日志,logs 目錄可以放在其他路徑,比如/var/logs/nginx 里面。
- sbin:保存 nginx 二進制啟動腳本,可以接受不同的參數以實現不同的功能
1.2nginx的運行控制
(1)檢查配置文件
與 Apache 的主程序 httpd 類似,Nginx 的主程序也提供了“-t”選項用來對配置文件進行檢查,以便找出不當或錯誤的配置。配置文件 nginx.conf 默認位于安裝目錄下的 conf/子目錄中。若要檢査位于其他位置的配置文件,可使用“-c選項來指定路徑。
(2)啟動,停止nginx
通過檢查 Nginx 程序的監聽狀態,或者在瀏覽器中訪問此 Web 服務(默認頁面將顯示“Welcome to nginx!”),可以確認 Nginx 服務是否正常運行。
(3)添加nginx系統服務
為了使 Nginx 服務的啟動、停止、重載等操作更加方便,可以編寫 Nginx 服務腳本,并使用 chkconfig 和 systemctl 工具來進行管理。
配置完成后可以使用systemctl命令來啟動,停止,重啟nginx服務
1.3訪問狀態統計
Nginx 內置了 HTTP STUB STATUS 狀態統計模塊,用來反饋當前的 Web 訪
問情況。
配置編譯參數時可添加--with-http stub status module 來啟用此模塊支持,可以使用命令/usr/local/nginx/sbin/nginx-V 查看已安裝的 Nginx 是否包含 HTTP STUB STATUS 模塊。
在瀏覽器中訪問 Nginx服務器的/status 網站位置,可以看到當前的狀態統計信息,如圖所示。其中,“Active connections”表示當前的活動連接數(4);而“server accepts handled requests”表示已經處理的連接信息,三個數字依次表示已處理的連接數(4)、成功的 TCP 握手次數(4)、已處理的請求數(3)。