域名概述 2-1
-
域名的概念:IP 地址不易記憶,域名是互聯網絡上識別和定位計算機的層次結構式的字符標識,與該計算機的互聯網協議 (IP) 地址相對應,用于在數據傳輸時標識計算機的電子方位,方便人們記憶和輸入。
-
早期使用 Hosts 文件解析域名:存在主機名稱重復、主機維護困難等問題。在早期計算機數量較少時,可通過修改本地 hosts 文件(C:\Windows\System32\drivers\etc\hosts)解決域名解析工作,但隨著互聯網發展,這種方式難以滿足海量計算機與域名的對應關系需求。計算機會優先查看本地 HOSTS 文件中是否存在相應的域名解析記錄,若存在則返回域名對應的 IP 地址,若不存在則通過 DNS 解析。
-
DNS(Domain Name System 域名系統):是一種可以將域名和 IP 地址相互映射的以層次結構分布的數據庫系統,采用遞歸查詢請求的方式來響應用戶的查詢,為互聯網的運行提供關鍵性的基礎服務。目前絕大多數的防火墻和網絡都會開放 DNS 服務,DNS 數據包不會被攔截,因此可以基于 DNS 協議建立隱蔽信道,在客戶端和服務器之間傳輸數據。
分布式 / 層次性的 DNS
DNS 系統主要包括域名空間(domain namespace)和資源記錄(resource record)、域名服務器(name server)、解析器(resolver)這 3 個組成部分。客戶端首先向首選域名服務器查詢,首選域名服務器檢查本地資源記錄,若存在則作權威回答;若不存在,則檢查本地緩存,有記錄則直接返回結果;若本地資源記錄和緩存記錄都不存在,則向根域名服務器查詢。根域名服務器返回相應頂級域的權威域名服務器的地址,首選域名服務器繼續向該頂級權威域名服務器查詢,如此迭代查詢,直到得到對查詢域名的權威回答,保存在本地緩存中并返回給客戶端,完成此次查詢。
域名概述 2-2
-
域名空間結構
-
根域 “.”:代表域名命名空間的根。
-
頂級域:直接處于根域下面的域,如 net、edu、com、gov、mil、org 等,代表一種類型的組織或一些國家,還有國家或地區代碼。
-
組織域(二級域):在頂級域下面,用來表示頂級域以內的一個特定的組織。
-
國家 / 地區域名:屬于頂級域的一種,由基于國際國家代碼的兩個字母組成,如.cn 代表中國。
-
二級域名:在頂級域名左側,通常是組織或公司的名稱。
-
FQDN(完全限定域名):主機名.DNS 后綴。
-
-
頂級域、二級域、主機名示例:如www.etiantian.org中,org 是頂級域,etiantian 是二級域,www 是主機名 。
域名注冊
-
域名注冊的作用:是 Internet 中用于解決地址對應問題的一種方法。
-
注冊原則:遵循先申請先注冊原則。
-
注冊步驟與相關機構:域名注冊需要通過域名注冊服務機構進行,全球域名由 ICANN(互聯網名稱與數字地址分配機構)統一管理,具體注冊工作由 ICANN 授權各國代理商執行,在中國還有 CNNIC(中國互聯網絡信息中心)負責相關事務。
網頁的概念 3-1
-
網頁:是純文本格式文件,編寫語言為 HTML,在用戶的瀏覽器中被 “翻譯” 成網頁形式顯示出來。
-
網站:由一個一個頁面構成,是多個網頁的結合體。
-
主頁:打開網站后出現的第一個網頁稱為網站主頁(或首頁)。
網頁的概念 3-2
-
域名:瀏覽網頁時輸入的網址,是互聯網上某個網站或服務器的易于記憶的地址。
-
HTTP:用來傳輸網頁的通信協議。
-
URL:是一種萬維網尋址系統。
網頁的概念 3-3
-
HTML:用來編寫網頁的超文本標記語言。
-
超鏈接:是將網站中不同網頁鏈接起來的功能。
-
發布:將制作好的網頁上傳到服務器供用戶訪問的過程。
HTML 概述 2-1
-
HTML 超文本標記語言:是網頁的 “源碼” 。
-
瀏覽器:是 “解釋和執行” HTML 源碼的工具。
-
示例代碼與展示:
?<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>標題</title></head><body><h1>一級標題</h1><h2>二級標題</h2><h3>三級標題</h3><h4>四級標題</h4><h5>五級標題</h5><h6>六級標題</h6></body></html>
顯示效果: 標題 一級標題 二級標題 三級標題 四級標題 五級標題 六級標題
HTML 概述 2-2
-
HTML 文檔的結構
?<html><head><title>我的第一個網頁 </title></head><body >Hello World!</body></html>
-
HTML 網頁:由頭部部分、標題部分、主體部分組成,主體部分包含網頁內容,包括文本、圖像等。
Web 概述
-
Web(World Wide Web):即全球廣域網,也稱為萬維網,是一種分布式圖形信息系統,建立在 Internet 上的一種網絡服務。
Web1.0 vs Web2.0
-
Web1.0:以編輯為特征,網站提供給用戶的內容是編輯處理后的,然后用戶閱讀網站提供的內容,這個過程是網站到用戶的單向行為。
-
Web2.0:更注重用戶的交互作用,用戶既是網站內容的消費者(瀏覽者),也是網站內容的制造者,加強了網站與用戶之間的互動,網站內容基于用戶提供,網站的諸多功能也由用戶參與建設,實現了網站與用戶雙向的交流與參與,具有用戶分享、以興趣為聚合點的社群、開放的平臺,活躍的用戶等特征。
靜態網頁
-
定義與擴展名:靜態網頁是標準的 HTML 文件,擴展名是.htm、.html,包含文本、圖像、聲音、Flash 動畫、客戶端腳本和 ActiveX 控件及 Java 小程序等,是網站建設的基礎,早期網站一般都由靜態網頁制作,沒有后臺數據庫、不含程序和不可交互的網頁。
-
適用場景:相對更新起來比較麻煩,適用于一般更新較少的展示型網站。
靜態網頁特點 2-1
-
固定 URL:每個靜態網頁都有一個固定的 URL,且 URL 以.htm、.html、.shtml 等常見形式為后綴,而不含有 “?”。
-
保存與訪問:網頁內容一經發布到網站服務器上,無論是否有用戶訪問,每個靜態網頁都是保存在網站服務器上的。
-
搜索引擎檢索:靜態網頁的內容相對穩定,容易被搜索引擎檢索。
靜態網頁特點 2-2
-
制作與維護工作量大:沒有數據庫的支持,在網站制作和維護方面工作量較大,當網站信息量很大時完全依靠靜態網頁制作方式比較困難。
-
交互性與功能限制:交互性較差,在功能方面有較大的限制。
-
瀏覽速度優勢:頁面瀏覽速度迅速,過程無需連接數據庫,開啟頁面速度快于動態頁面。
動態網頁
-
URL 與交互特點:網頁 URL 不固定,能通過后臺與用戶交互,在動態網頁網址中有一個標志性的符號 ——“?”。
-
常用語言:常用的語言有 PHP、JSP、Python、Ruby 等。
動態網頁的特點
-
交互性:網頁會根據用戶的要求和選擇而動態改變和響應,將瀏覽器作為客戶端界面,這將是今后 WEB 發展的大勢所趨。
-
自動更新:無須手動地更新 HTML 文檔,便會自動生成新的頁面,可以大大節省工作量。
-
因時因人而變:當不同的時間,不同的人訪問同一網址時會產生不同的頁面。
小結
-
DNS 服務器作用:將域名解析為 IP 地址,實現域名與 IP 地址的相互映射,幫助用戶通過域名訪問網絡資源。
-
HTML 文檔的結構:由頭部、標題、主體部分組成。
-
Web1.0 與 Web2.0 區別:Web1.0 是單向的內容提供,Web2.0 強調用戶交互和參與。
-
動態頁面與靜態頁面區別:靜態頁面 URL 固定、內容穩定但交互性差,動態頁面 URL 不固定、可交互且能自動更新和因時因人而變。
HTTP 協議概述
-
HTTP 協議的應用與目的:是互聯網上應用最為廣泛的一種網絡協議,設計這個協議的目的是為了發布和接收 Web 服務器上的 HTML 頁面。
-
HTTP 協議的版本:有 HTTP 0.9、HTTP 1.0、HTTP 1.1、HTTP 2.0。
HTTP 方法 2-1
-
HTTP 方法的定義:HTTP 支持幾種不同的請求命令,這些命令被稱為 HTTP 方法(HTTP method),每條 HTTP 請求報文都包含一個方法,告訴服務器要執行什么動作,如獲取一個 Web 頁面、運行一個網關程序、刪除一個文件等。
HTTP 方法 2-2
-
常用方法:常用的方法有 GET 和 POST,還有 PUT、DELETE 等。
-
方法對比 |HTTP 方法 | 描述 | |---|---| |GET | 請求獲取 Request-URI 所標識的資源,發送一個請求來取得服務器上的某一資源,能被緩存,會保存在瀏覽器的瀏覽紀錄里,有長度的限制(2048 字節),主要用于獲取數據,查詢的字符串會顯示在 URL 中,不安全 | |PUT | 請求服務器存儲一個資源,并用 Request-URI 作為其標識,PUT 通常指定了資源的存放位置,而 POST 則沒有 | |DELETE | 請求服務器刪除 Request-URI 所標識的資源 | |POST | 在 Request-URI 所標識的資源后附加新的數據,用于提交數據,不能被緩存,不會保存在瀏覽器的瀏覽紀錄里,沒有長度限制,查詢的字符串不會顯示在 URL 中,比較安全 |
GET 方法
-
獲取數據與特點:從指定的服務器上獲得數據,GET 請求能被緩存,會保存在瀏覽器的瀏覽紀錄里,有長度限制(2048 字節),主要用于獲取數據,查詢的字符串會顯示在 URL 中,不安全。
POST 方法
-
提交數據與特點:提交數據給指定服務器處理,POST 請求不能被緩存,不會保存在瀏覽器的瀏覽紀錄里,沒有長度限制,查詢的字符串不會顯示在 URL 中,比較安全。
HTTP 狀態碼
-
狀態碼的作用:當使用瀏覽器訪問某一個 URL,會根據處理情況返回相應的處理狀態。
-
狀態碼分類 | 狀態碼首位 | 已定義范圍 | 分類 | |---|---|---| |1xx|100 - 101 | 信息提示 | |2xx|200 - 206 | 成功 | |3xx|300 - 305 | 重定向 | |4xx|400 - 415 | 客戶端錯誤 | |5xx|500 - 505 | 服務器錯誤 |
-
常見狀態碼示例:200 表示請求成功;404 表示服務器無法找到被請求的頁面。
生產環境常見的 HTTP 狀態碼
消息 | 描述 |
---|---|
200 OK | 請求成功(其后是對 GET 和 POST 請求的應答文檔) |
301 Moved Permanently | 請求的永久頁面跳轉 |
302 | 臨時重定向 |
403 Forbidden | 禁止訪問該頁面 |
404 Not Found | 服務器無法找到被請求的頁面 |
500 Internal Server Error | 內部服務器錯誤 |
502 Bad Gateway | 無效網關 |
503 Service Unavailable | 當前服務不可用 |
504 Gateway Timeout | 網關請求超時 |
HTTP 協議請求流程分析
-
用戶輸入 URL。
-
獲取端口號(通常為 80)。
-
連接到目標主機的指定端口(如連接到 161.58.228.45 的端口 80 )。
-
獲取主機名。
-
通過 DNS 解析主機名獲取 IP 地址。
-
發送一條 HTTP GET 請求。
-
從服務器讀取 HTTP 響應。
-
關閉連接。
-
瀏覽器顯示頁面。
#編譯安裝nginx
安裝編譯依賴
? dnf -y install zlib-devel pcre-devel gcc openssl-devel
創建 Nginx 用戶和組(可選)
?useradd -r -s /sbin/nologin nginx
下載軟件包
?cd /tmpwget https://nginx.org/download/nginx-1.26.0.tar.gz ?# 替換為最新版本號tar -zxvf nginx-1.26.0.tar.gzcd nginx-1.26.0
創建軟連接從而讓系統能夠運行
? ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/?
?./configure --prefix=/usr/local/nginx \--user=nginx \--group=nginx \--with-http_ssl_module \--with-http_v2_module \--with-http_realip_module \--with-http_stub_status_module \--with-http_gzip_static_module \--with-pcre \--with-stream \--add-module=./ngx_http_proxy_connect_module??
參數說明
參數 | 作用 |
---|---|
--prefix | 指定 Nginx 安裝目錄 |
--user/--group | 指定運行 Nginx 的用戶和組 |
--with-http_ssl_module | 啟用 HTTPS 支持 |
--with-http_v2_module | 啟用 HTTP/2 支持 |
--with-http_realip_module | 支持獲取客戶端真實 IP(如配合反向代理) |
--with-http_gzip_static_module | 支持預壓縮的靜態文件(.gz) |
--with-stream | 啟用 TCP/UDP 代理支持(如負載均衡) |
--with-debug | 啟用調試模式(生產環境可移除) |
編譯并安裝
?makemake install
配置系統命令(systemd)
? vim /etc/systemd/system/nginx.service
寫入下列配置
?[Unit]Description=my nginxAfter=network.target?[Service]Type=forkingPIDFile=/usr/local/nginx/logs/nginx.pidExecStart=/usr/local/sbin/nginxExecStop=/usr/local/sbin/nginx -s stopExecRelaod=/usr/local/sbin/nginx -s reload??[Install]WantedBy=multi-user.target?
重載 systemd 并啟動服務
systemctl daemon-reload
systemctl start nginx
systemctl enable nginx