目錄
一. web基礎
1. 域名概念
2. Hosts 文件
3. DNS
4. 域名注冊
5. 網頁與 HTML
二. 網頁概述
1.??HTML 概述
2. HTML 基本標簽
3. 網站和主頁?
三. 靜態網頁與動態網頁
1.?靜態網頁
2. 動態網頁
3. 動態網頁語言
四.?HTTP 協議?
1. HTTP 協議概述
2. HTTP 方法
3.?HTTP 狀態碼
4.?HTTP 請求流程分析?
五. Nginx?服務
1. Nginx 服務基礎
2. Nginx 1.24?安裝
3. Nginx 的運行控制?
4. 配置文件 nginx.conf?
5. 訪問狀態統計?
?
一. web基礎
1. 域名概念
網絡是基于 TCP/IP 協議進行通信和連接的,每一臺主機都有一個唯一的標識(固 定的 IP地址),用以區別在網絡上成千上萬個用戶和計算機。網絡在區分所有與之相 連的網絡和主機時,均采用一種唯一、通用的地址格式,即每一個與網絡相連接的計算機和服務器都被指派一個獨一無二的地址。為了保證網絡上每臺計算機的IP地址的唯 一性,用戶必須向特定機構申請注冊,分配IP地址。網絡中的地址方案分為兩套:IP地址系統和域名地址系統。這兩套地址系統其實是一一對應的關系。IP地址用二進制數 來表示,每個 IP 地址長32 比特,由 4 個小于 256 的數字組成,數字之間用點間隔,例如 100.10.0.1 表示一個 IP 地址。由于 IP地址是數字標識,使用時難以記憶和書寫,因此在 IP 地址的基礎上又發展出一種符號化的地址方案,來代替數字型的 IP地址。每 一個符號化的地址都與特定的IP地址對應,這樣網絡上的資源訪問起來就容易得多了。 這個與網絡上的數字型 IP地址相對應的字符型地址,就被稱為域名。通俗的說,域名就相當于一個家庭的門牌號碼,別人通過這個號碼可以很容易地找到你。
(1) 域名的結構
以一個常見的域名為例說明其結構。圖1.1中,www.aliyun.com 網址是由二部分組 成,標號“aliyun”是這個域名的主體,而最后的標號“com”則是該域名的后綴,代表的這 是一個com 國際域名,是頂級域名,而前面的 www 是主機名。
DNS 規定,域名中的標號都由英文字母和數字組成,每一個標號不超過 63個字符,也不區分大小寫字母。標號中除連字符(-)外不能使用其他的標點符號。級別最低的域名寫在最左邊,而級別最高的域名寫在最右邊。由多個標號組成的完整域名總共不超 過 255 個字符。一些國家也紛紛開發使用采用本民族語言構成的域名,如德語,法語等。中國也開 始使用中文域名,但可以預計的是,在中國國內今后相當長的時期內,以英語為基礎的域名(即英文域名)仍然是主流。
2. Hosts 文件
Hosts 文件是一個用于存儲計算機網絡中節點信息的文件,它可以將主機名映射到 相應的 IP 地址,實現 DNS 的功能,它可以由計算機的用戶進行修改控制。
(1) Hosts 文件的作用
在網絡上訪問網站,要首先通過 DNS 服務器把要訪問的域名解析成 IP 地址后計 算機才能對這個網絡域名作網站進行訪問。
在網絡上訪問網站,要首先通過 DNS 服務器把要訪問的域名解析成 IP 地址后,計算機才能對這個網絡域名作網站進行訪問。
對于每個域名請求,如果都要等待域名服務器解析后返回 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 可以對其進行修改,如在文件中加上以下代碼。
?
當訪問 www.baidu.com 時,發現本機 hosts 文件中有映射的 IP 地址,則訪問這個 IP 地址。
3. DNS
在互聯網上域名與 IP 地址之間是一一對應的,域名雖然便于人們記憶,但機器之 間只能互相認識 IP 地址,它們之間的轉換工作稱為域名解析,域名解析要由專門的域 名解析系統來完成,DNS 就是進行域名解析的系統。主機名到IP 地址的映射有兩種方式:
靜態映射:每臺設備上都配置主機到IP地址的映射,各設備獨立維護自己的映射 表,而且只供本設備使用
動態映射:建立一套域名解析系統(DNS),只在專門的DNS服務器上配置主機 到IP 地址的映射,網絡上需要使用主機名通信的設備,首先需要到 DNS服務器查詢主機所對應的 IP 地址。
通過主機名,最終得到該主機名對應的 IP地址的過程叫做域名解析(或主機名解 析)。在解析域名時,可以首先采用靜態域名解析的方法。如果靜態域名解析不成功,再采用動態域名解析的方法。可以將一些常用的域名放入靜態域名解析表中,這樣可以 大大提高域名解析效率。在 Windows 命令行模式中輸入網絡査詢命令 nslookup www.baidu.com,可以查詢 到域名對應的 IP 地址。
4. 域名注冊
域名注冊是 Internet 中用于解決地址對應問題的一種方法。域名注冊遵循先申請先注冊原則,管理機構對申請人提出的域名是否違反了第三方的權利不進行任何實質審 查。每個域名都是獨一無二的,不可重復的。
域名注冊的所有者都是以域名注冊提交人填寫域名訂單的信息為準的,成功24 小時后,即可在國際(ICANN)、國內(CNNIC)管理機構査詢 whois 信息(域名所有 者等信息)。
域名注冊步驟:
(1)準備申請資料:com 域名無需提供身份證、營業執照等資料,cn 域名已開放 個人申請注冊,所以申請則需要提供身份證或企業營業執照;
(2)尋找域名注冊網站:由于.com、.cn 域名等不同后綴均屬于不同注冊管理機構 所管理,如要注冊不同后綴域名則需要從注冊管理機構尋找經過其授權的頂級域名注冊服務機構。如 com 域名的管理機構為 ICANN,cn 域名的管理機構為CNNIC(中國互 聯網絡信息中心)。若注冊商已經通過ICANN、CNNIC雙重認證,則無需分別到其他 注冊服務機構申請域名;
(3)查詢域名:在域名注冊查詢網站注冊用戶名成功后并查詢域名,選擇要注冊的 域名,并點擊注冊;
(4)正式申請:查到想要注冊的域名,并且確認域名為可申請的狀態后,提交注冊, 并繳納年費;
(5)申請成功:正式申請成功后,即可開始進入DNS 解析管理、設置解析記錄等 操作。
5. 網頁與 HTML
網頁是構成網站的基本元素,是承載各種網站應用的平臺。通俗地說,網站就是由 網頁組成的。如果只有域名和虛擬主機而沒有制作任何網頁,那么客戶仍舊無法訪問這 個網站。因為網頁是由 HTML(超文本標記語言)編寫的。
二. 網頁概述
網頁是一個文件,他存放在世界某個角落的某一部計算機中,而這部計算機必須是 與互聯網相連的。網頁經由網址(URL)來識別與存取,是互聯網中的一“頁”。
網頁可以包括如下內容:
- 文本:文本是網頁上最重要的信息載體與交流工具,網頁中的主要信息一般都以文 本形式為主。
- 圖像:圖像元素在網頁中具有提供信息并展示直觀形象的作用。
- 靜態圖像:在頁面中可能是圖片或矢量圖形。圖片格式通常為GIF、JPEG 或 PNG 等;矢量格式通常為 SVG 或 Flash。
- 動畫圖像:通常動畫為GIF和 SVG。
- Flash 動畫:動畫在網頁中的作用是有效地吸引訪問者更多的注意聲音:聲音是多媒體和視頻網頁重要的組成部分。
- 視頻:視頻文件的采用使網頁效果更加精彩且富有動感
- 表格:表格是在網頁中用來控制頁面信息的布局方式。
- 導航欄:導航欄在網頁中是一組超鏈接,其連接的目的端是網頁中重要的
- 頁面。
- 交互式表單:表單在網頁中通常用來聯接數據庫并接受訪問用戶在瀏覽器端輸入的數據,利用數據庫為客戶端與服務器端提供更多的互動。
網頁相關概念:
- 域名:是瀏覽網頁時輸入的網址。
- HTTP:用來傳輸網頁的通信協議,使用瀏覽器訪問網址時,在域名前面要加上 http:// ,表示使用 http 協議傳輸網頁。URL:是一種萬維網尋址系統,表示網絡上資源的位置路徑,HTML:是編寫網頁的超文本標記語言。
- 超鏈接:具備將網站中不同網頁鏈接起來的功能。發布:將制作好的網頁上傳到服務器供用戶訪問的過程
1.??HTML 概述
HTML, 叫做超文本標記語言,是一種規范,也是一種標準,它通過標記符號來標記 要顯示的網頁中的各個部分。網頁文件本身是一種文本文件,通過在文本文件中添加標 記符,可以告訴瀏覽器如何顯示其中的內容。如:文字如何處理,畫面如何安排,圖片 如何顯示等。瀏覽器按順序閱讀網頁文件,然后根據標記符解釋和顯示其標記的內容,對書寫出錯的標記將不指出其錯誤,且不停止其解釋執行過程,開發者只能通過顯示效 果來分析出錯原因和出錯部位。但需要注意的是,不同的瀏覽器,對同一標記符可能會有不完全相同的解釋,因而可能會有不同的顯示效果。
HTML?文件可以使用任何能夠生成 txt 文件的文本編輯器來編輯,生成超文本標記 語言文件,只用修改文件名后綴為”.html”或“.htm” 即可。
2. HTML 基本標簽
(1) HTML 語法規則
HTML 標簽采用雙標記符的形式,前后標記符對應,分別表示標記開始和結束,標 記符中間的內容被標簽描述。前標記符由“<XXX>”表示,結尾標記符多了一個“/”,由 “</XXX〉”表示。
(2) HTML 文件結構
HTML 文件最外層由<html></htm>表示,說明該文件是用 HTML 語言描述的。在它里面是并列的頭標簽(<head>)和內容標簽(<body>),最基本的 HTML 文件結構
<html>
<head>網頁的內容描述信息<head>
<body>網頁顯示的內容</body>
</html>
常用的頭標簽中的標簽:
標簽 | 描述 |
<title> | 定義了文檔的標題 |
<base> | 定義了頁面鏈接標簽的默認鏈接地址 |
<link> | 定義了一個文檔和外部資源之間的關系 |
<meta> | 定義了 HTML 文檔中的元數據 |
<script> | 定義了客戶端的腳本文件 |
<style> | 定義了 HTM 文檔的樣式文件 |
內容標簽中常用的標簽:
標簽 | 描述 |
<table> | 定義一個表格 |
<tr> | 定義了表格中的一行 |
<td> | 定義了表格中某一行的一列 |
<a> | 定義了一個超鏈接 |
<br> | 定義了換行 |
<font> | 定義了字體 |
3. 網站和主頁?
網站是由網頁組成的,包含多個網頁頁面,具有獨立域名、獨立存放空間的內容集 合,這些內容可能是網頁,也可能是程序或其他文件。
當一個網站服務器收到一臺電腦上網絡瀏覽器的消息連接請求時,便會向這臺計算 機發送這個文檔。當在瀏覽器的地址欄輸入域名,而未指向特定目錄或文件時,通常瀏覽器會打開網站的首頁。網站首頁往往會被編輯得易于了解該網站提供的信息,并引導 五聯網用戶瀏覽網站其他部分的內容。這部分內容一般被認為是一個目錄性質的內容
三. 靜態網頁與動態網頁
1.?靜態網頁
在網站設計中,純粹 HTML格式的網頁通常被稱為“靜態網頁”,靜態網頁是標準的 HTML 文件,它的文件擴展名是.htm、.html 。靜態網頁是網站建設的基礎,早期的網 站一般都是由靜態網頁制作的。靜態網頁也可以出現各種動態的效果,如.GIF 格式的動畫、FLASH 、滾動字幕等。這些“動態效果” 只是視覺上的,與下面將要介紹的動態網頁 是不同的概念。
2. 動態網頁
所謂的動態網頁,是指跟靜態網頁相對的一種網頁編程技術。靜態網頁,隨著 HTML, 代碼的生成,頁面的內容和顯示效果就基本上不會發生變化了--除非是修改頁面代碼。而動態網頁則不然,頁面代碼雖然沒有變,但是顯示的內容卻是可以隨著時間、環境或者數據庫操作的結果而發生改變的。動態網頁URL的后綴不是.htm、.html、.shtml、.xml 等靜態網頁的常見網頁制作格式,而是以aspx、.asp、.jsp、.php、.perl、cgi 等形式為后綴,并且在動態網頁網址中有一個 標志性的符號--“?”動態網頁是基本的 html 語法規范與 Java 、PHP、C#等高級程序設計語言、數據庫 編程等多種技術的融合,以期實現對網站內容和風格的高效、動態和交互式的管理。因 此,從這個意義上來講,凡是結合了 HTML 以外的高級程序設計語言和數據庫技術進行 的網頁編程技術生成的網頁都是動態網頁。
3. 動態網頁語言
早期的動態網頁主要采用通用網關接口CGI(Common Gateway Interface,技術,雖然 CGI 技術已經發展成熟而且功能強大,但由于編程困難、效率低下修改復雜,所以有逐漸被新技術取代的趨勢。
常用的動態網頁編程語言:
- PHP 即 Hypertext Preprocessor(超文本預處理器),它是當今 Internet 上最為火 熱的腳本語言,其語法借鑒了C、Java、PERL 等語言,但只需要很少的編程知識 你就能使用 PHP 建立一個真正交互的 web 站點。
- JSP 即 Java Server Pages(Java 服務器頁面),它是由 Sun Microsystem 公司于1999 年6月推出的新技術,是基于 Java Servlet 以及整個,ava 體系的 Web 開 發技術。
- Python 是一種面向對象、跨平臺的動態類計算機程序設計語言,最初被設計用于 編寫自動化腳本(she11),隨著版本的不斷更新和語言新功能的添加,越來越多被用 于獨立的大型項目開發。
- Ruby 是一種簡單快捷的面向對象(面向對象程序設計)腳本語言,在 20世紀 90 年代由日本人松本行弘(Yukihiro Matsumoto)開發,遵守 GPL, 協議和Ruby License.
它的靈感與特性來自于 Perl、Smalltalk、Eiffel、Ada 以及 Lisp 語言。
四.?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 請求報文都包含一個方法,告訴服務器要執行什么動作,包括:獲取一個頁 面,運行一個網關程序,刪除一個文件等。
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方法對比:
? | GET 方法 | POST 方法 |
對數據長度的限制 | URL的長度是受限制的(URL,的最大長度是2048 個字符) | 無限制 |
緩存 | 能被緩存 | 不能緩存 |
安全性 | 與POST 相比,GET 的安全性較差,因為所發送的數據是 URL的一部分。在發送密碼或其他敏感信息時絕不要使用GET | POST 比GET 更安全,因為參數不會被保存在瀏覽器歷史或Web 服務器日志中 |
歷史 | 參數保留在瀏覽器歷史中 | 參數不會保存在瀏覽器歷史中 |
后退按鈕/刷新 | 無害 | 數據會被重新提交,瀏覽器應 該告知用戶數據會被重新提交 |
書簽 | 可收藏為書簽 | 不可收藏為書簽 |
3.?HTTP 狀態碼
HTTP 狀態碼(HTTP Status Code )是用以表示網頁服務器 HTTP 響應狀態的 3 位數字代碼,當瀏覽器請求某一 URL 時,服務器根據處理情況返回相應的處理狀態。
HTTP 狀態碼可以分為五大類
狀態碼首位 | 已定義范國 | 分類 |
1xx | 100-101 | 信息提示 |
2xx | 200-206 | 成功 |
3xx | 300-305 | 重定向 |
4xx | 400-415 | 客戶端錯誤 |
5xx | 500-505 | 服務器錯誤 |
生產環境常見的狀態碼
消息 | 描述 |
200 OK | 請求成功(其后是對GET和POST請求的應文檔) |
301 Moved Permanently | 請求的永久頁面跳轉 |
403 Forbidden | 禁止訪問該頁面 |
404 Not Found | 服務器無法找到被請求的頁面 |
500 Internal Server Error | 內部服務器錯誤 |
502 Bad Gateway | 無效網關 |
503 Service Unavailable | 當前服務不可用 |
504 Gateway Timeout | 網關請求超時 |
4.?HTTP 請求流程分析?
用戶在瀏覽器輸入 URL 訪問時,發起 HTTP 請求報文,請求中包括請求行、請求 頭、請求體,服務器收到請求后返回響應報文,包括狀態行、響應頭、響應體。
(1) 請求報文?
- 請求行:請求行由請求方法、URL 以及協議版本三部分組成。
- 請求頭:請求頭為請求報文添加了一些附加信息,由“名/值”對組成,每行一對,名 和值之間使用冒號分隔。
- 空行:請求頭部的最后會有一個空行,表示請求頭部結束,接下來為請求體,這- 行非常重要,必不可少。
- 戶請求體:請求體是請求提交的參數,GET方法已經在URL中指明了參數,所以提交時沒有數據。POST 方法提交的參數在請求體中。
常用的請求頭
請求頭 | 描述 |
Host | 接受請求的服務器地址,可以是IP:端口號,也可以是域名 |
User-Agent | 發送請求的應用程序名稱 |
Connection | 指定與連接相關的屬性,如Connection:Keep-Alive |
Accept-Charset | 通知服務端可以發送的編碼格式 |
Accept-Encoding | 通知服務端可以發送的數據壓縮格式 |
Accept-Language | 通知服務端可以發送的語言 |
(2) 響應報文?
- 狀態行:狀態行由協議版本,狀態碼,狀態碼描述三部分組成。
- 響應頭:響應頭與請求頭部類似,為響應報文添加了一些附加信息。
- 空行:響應頭部的最后會有一個空行,表示響應頭部結束。
- 響應體:服務器返回的相應 HTML 數據,瀏覽器對其解析后顯示頁面。
常見響應頭部:
響應頭 | 描述 |
Server | 服務器應用程序軟件的名稱和版本 |
Content-Type | 響應正文的類型(是圖片還是二進制字符串) |
Content-Length | 響應正文長度 |
Content-Charset | 響應正文使用的編碼 |
Content-Encoding | 響應正文使用的數據壓縮格式 |
Content-Language | 響應正文使用的語言 |
五. Nginx?服務
一款輕量級的 HTTP 服務器軟件--Nginx,由俄羅斯的 Igor Sysoev 開發,其穩定、高效的特性逐漸被越來越多的用戶認可。本章將講解 Nginx 服務的基本構建、訪問控制方式、虛擬主機的搭建,還有應用廣泛的 LNMP 架構服務器的部署方式,并對 PHP FPM 模塊如何支持 PHP 語言進行討論。
1. Nginx 服務基礎
?Nginx(發音為[engine x])專為性能優化而開發,其最知名的優點是它的穩定性和低系統資源消耗,以及對 HTTP并發連接的高處理能力(單臺物理服務器可支持 30000~50000個并發請求)。
Nginx 誕生于 2004 年俄羅斯工程師 Igor Sysoev 之手,專為解決 C10K 高并發瓶頸而設計,其革命性的事件驅動架構與非阻塞I/0模型,使得單服務器即可承載數萬并發連接。相較于傳統 Web服務器,Nginx在靜態資源處理效率上可達Apache 的5倍以上,內存消耗僅為同類產品的 1/10(每萬連接約 2.5MB),同時支持配置熱更新與模塊化擴展。技術特性上融合了多階段請求處理、epoll事件機制等底層優化,使其成為全球32.2%網站的首選服務器(Netcraft 2023 數據),在云原生時代更衍生出Kubernetes Ingress、Service Mesh 等現代化應用形態。
作為現代架構的中樞神經,Nginx 在電商秒殺、流媒體分發、微服務網關等場景展現獨特價值:通過加權輪詢/最少連接等智能算法實現毫秒級負載均衡,借助動靜分離策略將靜態資源響應速度提升3倍以上,結合 Lua 腳本擴展可構建毫秒級 WAF 防護。典型案例包括 Netflix每日 PB 級視頻流量調度、Twitter 億級消息推送的連接管理,其輕量化特性更在物聯網領域支持百萬設備并發通信,正因為如此,大量提供社交網絡、新聞資訊、電子商務及虛擬主機等服務的企業紛紛選擇 Nginx 來提供 Web 服務。
2. Nginx 1.24?安裝
Nginx 安裝文件可以從官方網站 http://www.nginx.org/下載。
2.1 編譯安裝 Nginx
2.1.1?安裝支持軟件
Nginx 的配置及運行需要 pcre、zlib 等軟件包的支持,因此應預先安裝這些軟件的開發包(devel),以便提供相應的庫和頭文件,確保 Nginx 的安裝順利完成。
2.1.2 創建運行用戶、組和日志目錄?
Nginx 服務程序默認以 nobody 身份運行,建議為其創建專門的用戶賬號,以便更準確地控制其訪問權限,增加靈活性、降低安全風險。
2.1.3 編譯安裝 Nginx
配置 Nginx 的編譯選項時,將安裝目錄設為/usr/local/nginx,運行用戶和組均設為 nginx;啟用 http stub status module 模塊以支持狀態統計,便于查看服務器的連接信息。
其中
- --prefix=/usr/local/nginx:指定 nginx安裝路徑
- --user=nginx:指定運行 Nginx 工作進程的用戶和組
- --with-http ssl module:啟用 HTTPS 支持(SSL/TLS 加密)
- --with-http_v2 module:啟用 HTTP/2 協議支持
- --with-http stub status module:狀態統計模塊
- ?--with-pcre:啟用PCRE庫,支持正則表達式
為了使 Nginx 服務器的運行更加方便,可以為主程序 nginx 創建鏈接文件,以便管理員直接執行“nginx”命令就可以調用 Nginx 的主程序。
- conf:保存 nginx所有的配置文件,其中 nginx.conf 是 nginx 服務器的最核心最主要的配置文件
- html:目錄中保存了 nginx 服務器的 web 文件,但是可以更改為其他目錄保存 web 文件
- logs:用來保存 nginx 服務器的訪問日志錯誤日志等日志,1ogs 目錄可以放在其他路徑,比如/var/logs/nginx里面。
- sbin:保存 nginx 二進制啟動腳本,可以接受不同的參數以實現不同的功能。
- *_tmp:臨時文件目錄?
3. Nginx 的運行控制?
3.1 檢查配置文件
與 Apache 的主程序 httpd 類似,Nginx 的主程序也提供了“-t”選項用來對配置文件進行檢查,以便找出不當或錯誤的配置。配置文件 nginx.conf 默認位于安裝目錄下的 conf/子目錄中。若要檢査位于其他位置的配置文件,可使用“-c選項來指定路徑。
3.2 啟動、停止 Nginx
通過檢査 Nginx 程序的監聽狀態,或者在瀏覽器中訪問此 Web 服務(默認頁面將顯示“Welcome to nginx!”),可以確認 Nginx 服務是否正常運行。
開啟過后就可以訪問nginx
Windows瀏覽器訪問
linux訪問
主程序 Nginx 支持標準的進程信號,通過 ki11 或 ki1la11 命令發送 HUP信號表示重載配置,QUIT 信號表示退出進程,KILL 信號表示殺死進程。例如,若使用 killal1 命令,重載配置、停止服務的操作分別如下所示(通過“-s”選項指定信號種類)
[root@localhost~]# killall -s HUP nginx //選項-S HUP 等同于-1
[root@localhost~]# killall -s QUIT nginx //選項-S QUIT 等同于 -3
?以下是 Nginx 進程支持的主要信號(Signals)及其作用,通過這些信號可以控制 Nginx 的運行行為(如重載配置、優雅關閉等):
信號 | 命令參數 | 作用 |
SIGHUP | nginx-s reload | 重新加載配置文件(主進程重新讀取配置并啟動新的 Worker 進程,逐步替換舊進程)。 |
SIGUSR1 | nginx-s reopen | 重新打開日志文件(用于日志切割后通知 Nginx寫入新文件)。 |
SIGTERM | nginx-s stop | 立即終止主進程和所有 Worker 進程(快速關閉)。 |
SIGQUIT | nginx-s quit | 優雅關閉(等待當前請求處理完成后終止進程) |
SIGINT | - | 等同于 SIGTERM(如按Ctr1+ 終止前臺運行進程) |
SIGWINCH | - | 關閉 Worker 進程(通常與 SIGQUIT 配合用于熱升級) |
SIGUSR2 | - | 熱升級 Nginx(啟動新版本的主進程,需配合其他信號) |
當 Nginx 進程運行時,PID 號默認存放在 logs/日錄下的 nginx.pid 文件中,因此若改用 ki11 命令,也可以根據 nginx.pid 文件中的 PID 號來進行控制。
3.3 添加Nginx系統服務
為了使 Nginx 服務的啟動、停止、重載等操作更加方便,可以編寫 Nginx 服務腳本,并使用 chkconfig 和 systemctl 工具來進行管理。
驗證是否能使用系統命令 先殺死nginx進程號
這樣一來,就可以 systemctl 命令來啟動、停止、重啟、重載 Nginx 服務器了,方法是在執行時添加相應的 start、stop、restart、reload 參數
4. 配置文件 nginx.conf?
在 Nginx 服務器的主配置文件/usr/local/nginx/conf/nginx.conf 中,包括全局配置、I/0 事件配置和 HTTP 配置這三大塊內容,配置語句的格式為“關鍵字值;”(末尾以分號表示結束),以“#”開始的部分表示注釋。
4.1?全局配置
由各種配置語句組成,不使用特定的界定標記。全局配置部分包括Nginx服務的運行用戶、工作進程數、錯誤日志、PID 存放位置等基本設置。
?
上述配置中,worker_processes 表示工作進程的數量。如果服務器有多塊 CPU或者使用多核處理器,可以參考CPU核心總數來指定工作進程數。如果網站訪問量需求并不大,一般設為1就夠用了。其他三項配置均已有注釋,表示采用默認設置,例如,Nginx 的運行用戶實際是編譯時指定的nginx,若編譯時未指定則默認為 nobody。
?4.2 I/0 事件配置
使用“events{}” 界定標記,用來指定 Nginx 進程的 I/0 響應模型、每個進程的連接數等設置。對于 2.6及以上版本的內核,建議使用 epo11 模型以提高性能;每個進程的連接數應根據實際需要來定,一般在10000以下(默認為1024)
若工作進程數為 8,每個進程處理 4096個連接,則允許Nginx正常提供服務的連接數已超過 3萬個(4096x8=32768),當然具體還要看服務器硬件、網絡帶寬等物理條件的性能表現
4.3 HTTP 配置?
使用“http {}”界定標記,包括訪問日志、HTTP 端口、網頁目錄、默認字符集、連接保持,以及后面要講到的虛擬 Web 主機、PHP 解析等一系列設置,其中大部分配置語句都包含在子界定標記“server {}”內。
????????????????????????
上述配置中,1isten 語句允許同時限定 IP 地址,采用“IP 地址:端口”形式。root 語句用來設置特定訪問位置(如“1ocation/”表示根目錄)的網頁文檔路徑,默認為 Nginx 安裝目錄下的 htm1/子日錄,根據需要可改為/var/www/html 等其他路徑。
5. 訪問狀態統計?
Nginx 內置了 HTTP STUB STATUS 狀態統計模塊,用來反饋當前的 Web 訪問情況。
配置編譯參數時可添加--with-http stub status module 來啟用此模塊支持,可以使用命令/usr/local/nginx/sbin/nginx -V 査看已安裝的 Nginx 是否包含 HTTP STUB STATUS 模塊。
要使用 Nginx的狀態統計功能,除了啟用內建塊以外,還需要修改nginx.conf 配置文件,指定訪問位置并添加 stub status 配置代碼。
新的配置生效以后,在瀏覽器中訪問 Nginx 服務器的/status 網站位置可以看到當前的狀態統計信息,如圖所示。其中,“Active connections”表當前的活動連接數(2);而“server accepts handled requests”表示已處理的連接信息,三個數字依次表示已處理的連接數(2)、成功的 TCP 握手次數(2)、已處理的請求數(3)。?
?
?
?