欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)邀請(qǐng)碼778899分享:linux Nginx服務(wù)

柚子快報(bào)邀請(qǐng)碼778899分享:linux Nginx服務(wù)

http://yzkb.51969.com/

本章資源下載

【前置資源地址】:

一、Nginx服務(wù)基礎(chǔ)

1.1、 Nginx 簡(jiǎn)介

Nginx 是一個(gè)高性能的 HTTP 和反向代理服務(wù)器。

Nginx 是由 Igor Sysoev 為俄羅斯訪問點(diǎn)開量第二的 Rambler.ru 站發(fā)的,第一個(gè)公開版本 0.1.0 發(fā)布于 2004 年 10 月 4 日。

其將源代碼以類 BSD 許可證的形式發(fā)布,因它的穩(wěn)定性、豐富的功能集、示例配置文件和低系統(tǒng)資源的消耗而聞名。

2011 年 6 月 1 日,Nginx 1.0.4 發(fā)布。1.18 1.20 1.22 1.12 Nginx 是一款輕量級(jí)的 Web 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器, 單臺(tái)物理服務(wù)器可支持30 000~50 000個(gè)并發(fā)請(qǐng)求。并在一個(gè) BSD-like 協(xié)議下發(fā)行。由俄羅斯的程序設(shè)計(jì)師 Igor Sysoev 所開發(fā),供俄國(guó)大型的入口網(wǎng)站及搜索引擎 Rambler(俄文:Рамблер)使用。

其特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上 Nginx 的并發(fā)能力確實(shí)在同類型的網(wǎng)頁(yè)服務(wù)器中表現(xiàn)較好,中國(guó)大陸使用 Nginx 網(wǎng)站用戶有:百度 BWS、新浪、網(wǎng)易、騰訊、等。

1.2、Nginx 官網(wǎng)

nginx news

關(guān)于Tengine

Tengine 是由淘寶網(wǎng)發(fā)起的 Web 服務(wù)器項(xiàng)目。它在 Nginx 的基礎(chǔ)上,針對(duì)大訪問量網(wǎng)站的需求, 添 加了很多高級(jí)功能和特性。

The Tengine Web Server (taobao.org)

1.3、Nginx 功能介紹

靜態(tài)的web資源服務(wù)器html,圖片,js,css,txt等靜態(tài)資源http/https協(xié)議的反向代理 ,7層 url結(jié)合FastCGI /uWSGI/SCGI等協(xié)議反向代理動(dòng)態(tài)資源請(qǐng)求tcp/udp協(xié)議的請(qǐng)求轉(zhuǎn)發(fā)(反向代理) 4層

1.4、基礎(chǔ)特性

模塊化設(shè)計(jì),較好的擴(kuò)展性高可靠性支持熱部署:不停機(jī)更新配置文件,升級(jí)版本,更換日志文件低內(nèi)存消耗:10000個(gè)keep-alive連接模式下的非活動(dòng)連接,僅需2.5M內(nèi)存以及如下特性

①、Event-Driven(事件驅(qū)動(dòng)),

②、AIO(Asynchronous I/O,異步I/O),

③、mmap(Memory-Mapped File,內(nèi)存映射文件)

④、sendfile是一種高效地在網(wǎng)絡(luò)套接字之間傳輸文件的系統(tǒng)調(diào)用。與傳統(tǒng)的read-write模式(即先從文件中讀取數(shù)據(jù)到用戶空間,然后寫入到網(wǎng)絡(luò)套接字)相比,sendfile減少了數(shù)據(jù)的復(fù)制次數(shù),并允許內(nèi)核直接處理文件和網(wǎng)絡(luò)之間的數(shù)據(jù)傳輸,從而提高了數(shù)據(jù)傳輸?shù)男省?/p>

sendfile通常用于Web服務(wù)器等需要高效傳輸靜態(tài)文件的場(chǎng)景。通過(guò)使用sendfile,Web服務(wù)器可以更快地響應(yīng)客戶端的文件請(qǐng)求,減少CPU的使用率,并提升整體性能。

1.5、Web 服務(wù)相關(guān)的功能

虛擬主機(jī)(server)支持 keep-alive 和管道連接(利用一個(gè)連接做多次請(qǐng)求)訪問日志(支持基于日志緩沖提高其性能)url rewirte路徑別名基于IP及用戶的訪問控制支持速率限制及并發(fā)數(shù)限制重新配置和在線升級(jí)而無(wú)須中斷客戶的工作進(jìn)程

1.6、Nginx 應(yīng)用場(chǎng)景

① 靜態(tài)服務(wù)器 (圖片、視頻服務(wù)、文本)

② 動(dòng)態(tài)服務(wù)

③ 反向代理, 負(fù)載均衡

④ 緩存服務(wù)

nginx 中http七層代理和四層代理

web服務(wù)器

做:代理服務(wù)器,反向代理, 負(fù)載均衡

1.7、簡(jiǎn)述Nginx和Apache的差異

Nginx是一個(gè)甚于事件的Web服務(wù)器,Apache是一個(gè)基于流程的服務(wù)器;Nginx避免子進(jìn)程的概念,Apache是基于子進(jìn)程的;Nginx在內(nèi)存消耗和連接方面更好,Apache在內(nèi)存消耗和連接方面一般;Nginx的性能和可伸縮性不依賴于硬件,Apache依賴于CPU和內(nèi)存等硬件; Nginx支持熱部署,Apache不支持熱部署;Nginx對(duì)于靜態(tài)文件處理具有更高效率,Apache相對(duì)一般;Nginx在反向代理場(chǎng)景具有明顯優(yōu)勢(shì),Apache相對(duì)一般。

1.8、Nginx 相對(duì)于 Apache 的優(yōu)點(diǎn)

1、輕量級(jí),同樣是 web 服務(wù)(采用C進(jìn)行編寫),比 Apache 占用更少的內(nèi)存及資源;

2、高并發(fā),Nginx 處理請(qǐng)求是異步非塞的(以epoll and kqueue作為開發(fā)模型),而 Apache 則是阻塞型的(在處理后端慢或者前端壓力很大的情況下, 很容易出現(xiàn)進(jìn)程數(shù)飆升,從而拒絕服務(wù)的現(xiàn)象),而高并發(fā)下 Nginx 能保持低資源低消耗高性能;

3、高度模塊化的設(shè)計(jì)編寫模塊相對(duì)簡(jiǎn)單;社區(qū)活躍,各種高性能模塊出品迅速。

4、配置簡(jiǎn)潔,正則配置讓很多事情變得簡(jiǎn)單,而且改完配置能使用 -t 測(cè)試配置有沒有問題,apache 配 置復(fù)雜 ,重啟的時(shí)候發(fā)現(xiàn)配置出錯(cuò)了,會(huì)很崩潰

5、一般用于處理靜態(tài)文件,靜態(tài)處理性能比apache高三倍以上

6、作為負(fù)載均衡服務(wù)器,支持7層負(fù)載均衡

7、本身就是一個(gè)反向代理服務(wù)器,而且可以作為非常優(yōu)秀的郵件代理服務(wù)器

8、nginx啟動(dòng)特別容易, 并且?guī)缀蹩梢宰龅?7*24 不間斷運(yùn)行,即使運(yùn)行數(shù)個(gè)月也不需要重新啟動(dòng), 支持熱部署,比如:實(shí)現(xiàn)不間斷服務(wù)的情況下進(jìn)行軟件版本的升級(jí)與版本的回退

反過(guò)來(lái)

Apache 相對(duì)于 Nginx 的優(yōu)點(diǎn):

1、Nginx 處理動(dòng)態(tài)請(qǐng)求是弱項(xiàng),一般動(dòng)態(tài)請(qǐng)求要 Apache 去做,Nginx 只適合靜態(tài)和反向,雖然Nginx也可以處理動(dòng)態(tài)內(nèi)容,但通常需要與其他后端服務(wù)器(如PHP-FPM)配合使用。而Apache則內(nèi)置了對(duì)多種動(dòng)態(tài)內(nèi)容的支持,如PHP、Python等,這使得它在處理動(dòng)態(tài)請(qǐng)求時(shí)更為直接和高效。

2、apache的Rewrite(重寫)比nginx強(qiáng)大,在rewrite頻繁的情況下,用apache。(但是還是要看歷史背景和特定情境下)

3、成熟,少 bug ,Nginx 的 bug 相對(duì)較多;

4、超穩(wěn)定 存在就是理由,可以在多種操作系統(tǒng)上運(yùn)行,一般來(lái)說(shuō),需要性能的 web 服務(wù),用 Nginx 。如果不需要性能只求穩(wěn)定,那就 Apache。

1.9、Nginx 架構(gòu)

上圖是 Nginx 的進(jìn)程模型,下面我們會(huì)簡(jiǎn)單講解圖中不同部分的含義:

?主進(jìn)程(Master) ?工作進(jìn)程(Worker)

在服務(wù)器編程中,尤其是在使用多進(jìn)程模型來(lái)處理并發(fā)連接時(shí),經(jīng)常采用“主從模型”

(Master-Worker 模型)來(lái)組織進(jìn)程。這種模型下,有一個(gè)主進(jìn)程(Master)負(fù)責(zé)監(jiān)聽網(wǎng)絡(luò)端口上的連接請(qǐng)求,而多個(gè)工作進(jìn)程(Worker)則負(fù)責(zé)處理這些連接請(qǐng)求的實(shí)際任務(wù)。

--------------------------------------------------------------------------------------------------------------------------

1.主進(jìn)程首先創(chuàng)建一個(gè)套接字(socket),這個(gè)套接字用于監(jiān)聽網(wǎng)絡(luò)上的連接請(qǐng)求。通常,這個(gè)套接字被綁定到服務(wù)器的一個(gè)特定IP地址和端口上,并通過(guò)listen()函數(shù)設(shè)置為監(jiān)聽狀態(tài)。?????listenfd(監(jiān)聽文件描述符)是主進(jìn)程創(chuàng)建的用于監(jiān)聽連接請(qǐng)求的套接字。它代表了服務(wù)器在網(wǎng)絡(luò)上的一個(gè)“入口點(diǎn)”,等待客戶端的連接請(qǐng)求。

2.在設(shè)置好監(jiān)聽套接字后,主進(jìn)程會(huì)通過(guò)fork()系統(tǒng)調(diào)用創(chuàng)建多個(gè)工作進(jìn)程。每個(gè)工作進(jìn)程都是主進(jìn)程的一個(gè)副本,包括它們的代碼、數(shù)據(jù)以及打開的文件描述符(包括監(jiān)聽套接字)

3.每個(gè)工作進(jìn)程在啟動(dòng)后通常會(huì)關(guān)閉監(jiān)聽套接字(listenfd),因?yàn)楸O(jiān)聽連接的工作由主進(jìn)程負(fù)責(zé),工作進(jìn)程的任務(wù)是處理已經(jīng)被接受的連接。

4.工作進(jìn)程不直接監(jiān)聽新的連接請(qǐng)求,但它們從主進(jìn)程接收已經(jīng)建立的連接。這通常通過(guò)一些進(jìn)程間通信(IPC)機(jī)制實(shí)現(xiàn),但在傳統(tǒng)的UNIX網(wǎng)絡(luò)編程中,更常見的是使用套接字對(duì)(socket pair)或管道(pipe)來(lái)傳遞新的連接描述符給工作進(jìn)程,或者使用更現(xiàn)代的機(jī)制如UNIX域套接字。

5.?worker 進(jìn)程之間是平等的,每個(gè)進(jìn)程,處理請(qǐng)求的機(jī)會(huì)也是一樣的。 當(dāng)我們提供 80 端口的 http 服務(wù)時(shí),一個(gè)連接請(qǐng)求過(guò)來(lái),每個(gè)進(jìn)程都有可能處理這個(gè)連接。

(1)所有 worker 進(jìn)程的 listenfd 會(huì)在新連接到來(lái)時(shí)變得可讀,為保證只有一個(gè)進(jìn)程處理該連接,所有?worker 進(jìn)程會(huì)在注冊(cè) listenfd 讀事件前搶 accept_mutex,搶到互斥鎖的那個(gè)進(jìn)程注冊(cè) listenfd讀事件,然后在讀事件里調(diào)用 accept 接受該連接。(解決驚群) (2)當(dāng)一個(gè) worker 進(jìn)程在 accept 這個(gè)連接之后,就開始讀取請(qǐng)求、解析請(qǐng)求、處理請(qǐng)求。產(chǎn)生數(shù)據(jù)后,再返回給客戶端,最后才斷開連接(被外部信號(hào)(如SIGTERM)中斷,或者主進(jìn)程通知它們退出),這樣一個(gè)完整的請(qǐng)求就是這樣的了。

我們可以看到:一個(gè)請(qǐng)求,完全由 worker 進(jìn)程來(lái)處理,而且只在一個(gè) worker 進(jìn)程中處理。

也許你還有個(gè)疑問,那就是 Nginx 采用多 worker 的方式來(lái)處理請(qǐng)求,每個(gè) worker 里面只有一個(gè)主線程。那能夠處理的并發(fā)數(shù)很有限啊,多少個(gè) worker 就能處理多少個(gè)并發(fā),何來(lái)高并發(fā)呢?

這就是 Nginx?的高明之處,Nginx 采用了異步非阻塞的方式來(lái)處理請(qǐng)求,也就是說(shuō),Nginx 是可以同時(shí)處理成千上萬(wàn)個(gè)請(qǐng)求的。

-------------------------------------------------------------------------------------------------------------------------- 這里簡(jiǎn)單補(bǔ)充一下一些知識(shí)點(diǎn)

Socket的概念:

一個(gè)Socket是一對(duì)IP地址和端口。 Socket可以看成在兩個(gè)程序進(jìn)行通訊連接中的一個(gè)端點(diǎn),一個(gè)程序?qū)⒁欢涡畔懭隨ocket中,該Socket將這段信息發(fā)送給另外一個(gè)Socket中,使這段信息能傳送到其他程序中。你可以這么理解:socket是進(jìn)程之間用來(lái)對(duì)話的中間層工具。

異步非阻塞的概念: 異步的概念是和同步相對(duì)的,也就是不同事件之間不是同時(shí)發(fā)生的。 非阻塞的概念是和阻塞對(duì)應(yīng)的,阻塞是事件按順序執(zhí)行,每一事件都要等待上一事件的完成,而非阻塞是如果事件沒有準(zhǔn)備好,這個(gè)事件可以直接返回,過(guò)一段時(shí)間再進(jìn)行處理詢問,這期間可以做其他事情。

驚群效應(yīng)(Thundering Herd Problem):

是操作系統(tǒng)中多進(jìn)程(或多線程)在同時(shí)等待同一資源時(shí)可能出現(xiàn)的一種現(xiàn)象。具體來(lái)說(shuō),就是當(dāng)多個(gè)進(jìn)程或線程在等待同一個(gè)事件時(shí),一旦該事件發(fā)生,所有進(jìn)程或線程都會(huì)被內(nèi)核喚醒,但通常只有一個(gè)進(jìn)程或線程能夠成功處理該事件,而其他進(jìn)程或線程在發(fā)現(xiàn)無(wú)法獲取該事件后又重新進(jìn)入等待狀態(tài)。這種現(xiàn)象會(huì)導(dǎo)致系統(tǒng)資源的浪費(fèi)和性能下降。

補(bǔ)充:socket是什么和io模型-阻塞和非阻塞以及驚群的一些解決辦法? ? ?整理

文檔地址:【前置資源】

1.10、Nginx 進(jìn)程結(jié)構(gòu)

web請(qǐng)求處理機(jī)制多進(jìn)程方式:服務(wù)器每接收到一個(gè)客戶端請(qǐng)求就有服務(wù)器的主進(jìn)程生成一個(gè)子進(jìn)程響應(yīng)客戶端,直到用戶關(guān)閉連接,這樣的優(yōu)勢(shì)是處理速度快,子進(jìn)程之間相互獨(dú)立,但是如果訪問過(guò)大會(huì)導(dǎo)致服務(wù)器資源耗盡而無(wú)法提供請(qǐng)求。

多線程方式:與多進(jìn)程方式類似,但是每收到一個(gè)客戶端請(qǐng)求會(huì)有服務(wù)進(jìn)程派生出一個(gè)線程來(lái)個(gè)客 戶方進(jìn)行交互,一個(gè)線程的開銷遠(yuǎn)遠(yuǎn)小于一個(gè)進(jìn)程,因此多線程方式在很大程度減輕了web服務(wù)器 對(duì)系統(tǒng)資源的要求,但是多線程也有自己的缺點(diǎn),即當(dāng)多個(gè)線程位于同一個(gè)進(jìn)程內(nèi)工作的時(shí)候,可 以相互訪問同樣的內(nèi)存地址空間,所以他們相互影響,一旦主進(jìn)程掛掉則所有子線程都不能工作 了,IIS服務(wù)器使用了多線程的方式,需要間隔一段時(shí)間就重啟一次才能穩(wěn)定。

工作進(jìn)程(worker process)的功能:

所有 Worker 進(jìn)程都是平等的

實(shí)際處理:網(wǎng)絡(luò)請(qǐng)求,由 Worker 進(jìn)程處理

Worker進(jìn)程數(shù)量:一般設(shè)置為核心數(shù),充分利用CPU資源,同時(shí)避免進(jìn)程數(shù)量過(guò)多,導(dǎo)致進(jìn)程競(jìng)爭(zhēng)CPU資源,

增加上下文切換的損耗

接受處理客戶的請(qǐng)求

將請(qǐng)求依次送入各個(gè)功能模塊進(jìn)行處理

I/O調(diào)用,獲取響應(yīng)數(shù)據(jù)

與后端服務(wù)器通信,接收后端服務(wù)器的處理結(jié)果

緩存數(shù)據(jù),訪問緩存索引,查詢和調(diào)用緩存數(shù)據(jù)

發(fā)送請(qǐng)求結(jié)果,響應(yīng)客戶的請(qǐng)求

接收主程序指令,比如重啟、升級(jí)和退出等

1.11、Nginx 模塊

核心模塊:是 Nginx 服務(wù)器正常運(yùn)行必不可少的模塊,提供錯(cuò)誤日志記錄 、配置文件解析 、事件 驅(qū)動(dòng)機(jī)制 、進(jìn)程管理等核心功能 標(biāo)準(zhǔn)HTTP模塊:提供 HTTP 協(xié)議解析相關(guān)的功能,比如: 端口配置 、 網(wǎng)頁(yè)編碼設(shè)置 、 HTTP響應(yīng) 頭設(shè)置 等等 可選HTTP模塊:主要用于擴(kuò)展標(biāo)準(zhǔn)的 HTTP 功能,讓 Nginx 能處理一些特殊的服務(wù),比如:Flash 多媒體傳輸 、解析 GeoIP 請(qǐng)求、 網(wǎng)絡(luò)傳輸壓縮 、 安全協(xié)議 SSL 支持等 郵件服務(wù)模塊:主要用于支持 Nginx 的 郵件服務(wù) ,包括對(duì) POP3 協(xié)議、 IMAP 協(xié)議和 SMTP協(xié)議 的支持 Stream服務(wù)模塊: 實(shí)現(xiàn)反向代理功能,包括TCP協(xié)議代理 四層 第三方模塊:是為了擴(kuò)展 Nginx 服務(wù)器應(yīng)用,完成開發(fā)者自定義功能,比如: Json 支持、 Lua 支 持等。

nginx高度模塊化,但其模塊早期不支持DSO機(jī)制;1.9.11 版本支持動(dòng)態(tài)裝載和卸載

常用模塊

ngx_http_core_module 核心模塊

ngx_http_access_module 訪問控制

ngx_http_auth_basic_module 身份驗(yàn)證

ngx_http_gzip_module 壓縮模塊

ngx_http_log_module 日志模塊

ngx_http_proxy_module 代理模塊

ngx_http_rewrite_module 重寫模塊

ngx_http_stub_status_module 狀態(tài)頁(yè)模塊

ngx_http_upstream_module 反向代理

ngx_http_stream_module 四層代理

核心模塊:core module 標(biāo)準(zhǔn)模塊: HTTP 模塊: ngx_http_* HTTP Core modules ? #默認(rèn)功能 HTTP Optional modules #需編譯時(shí)指定 Mail 模塊: ngx_mail_* Stream 模塊 ngx_stream_* 第三方模塊

二、編譯安裝nginx 服務(wù)

2.1、 擴(kuò)展在線安裝nginx

1、yum部署Nginx

①使用yum部署Nginx需要先安裝epel-release擴(kuò)展包,官方源默認(rèn)沒有Nginx的yum源。

安裝epel-release擴(kuò)展源

yum install epel-release -y

②擴(kuò)展源安裝完后直接安裝Nginx。

安裝nginx服務(wù)

yum install nginx -y

③使用yum安裝的nginx配置文件位置在:/etc/nginx.conf。

默認(rèn)根目錄在:/usr/share/nginx/html。

默認(rèn)日志文件在:/var/log/nginx/路徑下。

2.2、Nginx編譯安裝

關(guān)閉防火墻,將安裝nginx所需軟件包傳到/opt目錄下

systemctl stop firewalld

systemctl disable firewalld

setenforce 0

1.下載安裝包:nginx-1.18.0.tar.gz(以此為實(shí)驗(yàn))在這里可以下載你的安裝包

wget https://nginx.org/download/nginx-1.18.0.tar.gz

其他類似? https://nginx.org/download/nginx-1.20.1.tar.gz

2.安裝依賴包

Nginx的配置及運(yùn)行需要pcre、zlib等軟件包的支持,因此需要安裝這些軟件的開發(fā)包,以便提供相應(yīng)的庫(kù)和頭文件。

yum -y install pcre-devel zlib-devel gcc gcc-c++ make

3.創(chuàng)建運(yùn)行用戶與組

創(chuàng)建運(yùn)行用戶、組(Nginx 服務(wù)程序默認(rèn)以 nobody 身份運(yùn)行,建議為其創(chuàng)建專門的用戶賬號(hào),以便更準(zhǔn) 確地控制其訪問權(quán)限)

useradd -M -s /sbin/nologin nginx

?編譯安裝Nginx

cd /opt

tar xzvf nginx-1.18.0.tar.gz -C /opt/

cd nginx-1.18.0/

./configure \

--prefix=/usr/local/nginx \

--user=nginx \

--group=nginx \

--with-http_stub_status_module

make && make install

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

檢查?

nginx -t

沒有創(chuàng)建用戶

代表成功

2.2.1、添加 Nginx 系統(tǒng)服務(wù)

方法一: service 系統(tǒng)管理

通用

vim /etc/init.d/nginx

#!/bin/bash

#chkconfig: 35 99 20 #這是固定格式,2345表示運(yùn)行級(jí)別,之后為開機(jī)執(zhí)行順序和關(guān)機(jī)執(zhí)行順序

#description:Nginx Service Control Script #描述,最好也添加

COM="/usr/local/nginx/sbin/nginx"

PID="/usr/local/nginx/logs/nginx.pid"

case "$1" in

start)

$COM

;;

stop)

kill -s QUIT $(cat $PID)

;;

restart)

$0 stop

$0 start

;;

reload)

kill -s HUP $(cat $PID)

;;

*)

echo "Usage: $0 {start|stop|restart|reload}"

exit 1

;;

esac

exit 0

chmod +x /etc/init.d/nginx chkconfig --add nginx #添加為系統(tǒng)服務(wù) systemctl stop nginx systemctl start nginx

也可以? ? ? service nginx start | stop | restart | reload ?

方法二:

常用

vim /lib/systemd/system/nginx.service

[Unit]

Description=nginx

After=network.target

[Service]

Type=forking

PIDFile=/usr/local/nginx/logs/nginx.pid

ExecStart=/usr/local/nginx/sbin/nginx

ExecReload=/bin/kill -s HUP $MAINPID

ExecStop=/bin/kill -s QUIT $MAINPID

PrivateTmp=true

[Install]

WantedBy=multi-user.target

chmod 754 /lib/systemd/system/nginx.service

systemctl start nginx.service

systemctl? enable nginx.service

檢測(cè)

輸入ip地址

2.2.2、Nginx 信號(hào)

nginx命令支持向其發(fā)送信號(hào),實(shí)現(xiàn)不同功能 nginx

查看

nginx -h

當(dāng)做單獨(dú)命令使用有以下選項(xiàng)?

2.2.3、普通升級(jí)

新版本升級(jí):

tar -zxvf nginx-1.xx.xx.tar.gz 1.22.0

tar -zxvf nginx-1.xx.xx.tar.gz 1.22.0

2.2.4、附加:平滑升級(jí)

擴(kuò)展還有一種方式叫做 平滑升級(jí) 在不影響生產(chǎn)環(huán)境的情況升級(jí)在【前置資源】

2.3、nginx主配置文件nginx.conf

在Nginx服務(wù)的主配置文件 nginx.conf

vim /usr/local/nginx/conf/nginx.conf

2.3.1、 全局配置

2P:2個(gè)物理CPU

4C:1物理核有4個(gè)核心一共有2*4=8個(gè)邏輯核

8G內(nèi)存 4C 16G 高效盤 40G (系統(tǒng)盤) ? 存儲(chǔ) oss 網(wǎng)絡(luò)存儲(chǔ) nas 50M

2.3.2、 I/O 事件配置

1.使用epoll模型以提高性能

epoll是Linux內(nèi)核為處理大批句柄而作改進(jìn)的poll,是Linux下多路復(fù)用IO接口select/poll的增強(qiáng)版本,它能顯著的減少程序在大量并發(fā)連接中只有少量活躍的情況下的系統(tǒng)CPU利用率。

2.還有在Linux平臺(tái)上,在進(jìn)行高并發(fā)TCP連接處理時(shí),最高的并發(fā)數(shù)量都要受到系統(tǒng)對(duì)用戶單一進(jìn)程同時(shí)可打開文件數(shù)量的限制

(這是因?yàn)橄到y(tǒng)為每個(gè)TCP連接都要?jiǎng)?chuàng)建一個(gè)socket句柄,每個(gè)socket句柄同時(shí)也是一個(gè)文件句柄)

可使用ulimit -a命令查看系統(tǒng)允許當(dāng)前用戶進(jìn)程打開的文件數(shù)限制【展示當(dāng)前資源限制】。

如提高每個(gè)進(jìn)程的連接數(shù)還需執(zhí)行“ulimit -n 65535”命令臨時(shí)修改本地每個(gè)進(jìn)程可以同時(shí)打開的最大文件數(shù)。

?/etc/security/limits.conf?? 是一個(gè)用于配置用戶或用戶組資源限制的配置文件。這個(gè)文件通常用于設(shè)置系統(tǒng)資源的軟限制和硬限制,以及一些特殊權(quán)限。

若工作進(jìn)程數(shù)為 8,每個(gè)進(jìn)程處理 4096 個(gè)連接,則允許 Nginx 正常提供服務(wù)的連接數(shù) 已超過(guò) 3 萬(wàn)個(gè)(4096×8=32 768),當(dāng)然具體還要看服務(wù)器硬件、網(wǎng)絡(luò)帶寬等物理?xiàng)l件的性 能表現(xiàn)。

附加:IO模型的知識(shí)點(diǎn)【前置資源】

2.3.3、?HTTP 配置

使用“http { }”界定標(biāo)記,包括訪問日志、HTTP 端口、網(wǎng)頁(yè)目錄、默認(rèn)字符集、連接保持,以及后面要講到的虛擬 Web 主機(jī)、PHP 解析等一系列設(shè)置,其中大部分配置語(yǔ)句都包含在子界定標(biāo)記“server { }”內(nèi)

http {

##文件擴(kuò)展名與文件類型映射表

include mime.types;

##默認(rèn)文件類型

default_type application/octet-stream;

##日志格式設(shè)定

#log_format main '$remote_addr - $remote_user [$time_local] "$request" '

# '$status $body_bytes_sent "$http_referer" '

# '"$http_user_agent" "$http_x_forwarded_for"';

##訪問日志位置

#access_log logs/access.log main;

##支持文件發(fā)送(下載)

sendfile on;

##此選項(xiàng)允許或禁止使用socket的TCP_CORK的選項(xiàng)(發(fā)送數(shù)據(jù)包前先緩存數(shù)據(jù)),此選項(xiàng)僅在使用

sendfile的時(shí)候使用

#tcp_nopush on;

##連接保持超時(shí)時(shí)間,單位是秒

#keepalive_timeout 0;

keepalive_timeout 65;

##gzip模塊設(shè)置,設(shè)置是否開啟gzip壓縮輸出

#gzip on;

##Web 服務(wù)的監(jiān)聽配置

server {

##監(jiān)聽地址及端口

listen 80;

##站點(diǎn)域名,可以有多個(gè),用空格隔開

server_name www.kgc.com;

##網(wǎng)頁(yè)的默認(rèn)字符集

charset utf-8;

##根目錄配置

location / {

##網(wǎng)站根目錄的位置/usr/local/nginx/html

root html;

##默認(rèn)首頁(yè)文件名

index index.html index.php;

}

##內(nèi)部錯(cuò)誤的反饋?lái)?yè)面

error_page 500 502 503 504 /50x.html;

##錯(cuò)誤頁(yè)面配置

location = /50x.html {

root html;

}

}

}

三、實(shí)戰(zhàn)

3.1、Nginx的訪問狀態(tài)統(tǒng)計(jì)

-------訪問狀態(tài)統(tǒng)計(jì)配置--------

1.先使用命令/usr/local/nginx/sbin/nginx -V 查看已安裝的 Nginx 是否包含

HTTP_STUB_STATUS 模塊

cat /opt/nginx-1.18.0/auto/options |grep YES

#可查看 nginx 已安裝的所有模塊

2.修改 nginx.conf 配置文件,指定訪問位置并添加 stub_status 配置

cd /usr/local/nginx/conf

#備份

cp nginx.conf nginx.conf.bak

#配置

vim /usr/local/nginx/conf/nginx.conf

------------------------------------------------------------------

http {

......

server {

listen 80;

server_name www.yc.com;

charset utf-8;

location / {

root html;

index index.html index.php;

}

##添加 stub_status 配置##

location /status {

#訪問位置為/status

stub_status on;

access_log off;

}

}

}

-------------------------------------------------------------------

3.重啟服務(wù),訪問測(cè)試

systemctl restart nginx

#打開狀態(tài)統(tǒng)計(jì)功能

#關(guān)閉此位置的日志記錄

瀏覽器訪問 http://192.168.10.19/status

Active connections :表示當(dāng)前的活動(dòng)連接數(shù); server accepts handled requests :表示已經(jīng)處理的連接信息,三個(gè)數(shù)字依次表示

已處理的連接數(shù)、成功的TCP握手次數(shù)、 已處理的請(qǐng)求數(shù)。 可 curl -s http://192.168.10.19/status 結(jié)合 awk與if 語(yǔ)句進(jìn)行性能監(jiān)控。

補(bǔ)充:也可以nginx-module-vts監(jiān)控nginx流量

也放在【前置資源】

3.2、基于授權(quán)的訪問控制

--------基于授權(quán)的訪問控制--------

1.生成用戶密碼認(rèn)證文件

yum install -y httpd-tools

htpasswd -c /usr/local/nginx/passwd.db zhangsan

chown nginx /usr/local/nginx/passwd.db

chmod 400 /usr/local/nginx/passwd.db

2.修改主配置文件相對(duì)應(yīng)目錄,添加認(rèn)證配置項(xiàng)

vim /usr/local/nginx/conf/nginx.conf

......

server {

location / {

......

##添加認(rèn)證配置##

auth_basic "secret";

}

}

#設(shè)置密碼提示框文字信息

auth_basic_user_file /usr/local/nginx/passwd.db;

??3.重啟服務(wù),訪問測(cè)試 nginx -t systemctl restart nginx 瀏覽器訪問 http://192.168.10.19

輸入密碼以后

3.3、基于客戶端的訪問控制

--------基于客戶端的訪問控制--------

訪問控制規(guī)則如下:

deny IP/IP 段:拒絕某個(gè) IP 或 IP 段的客戶端訪問。

allow IP/IP 段:允許某個(gè) IP 或 IP 段的客戶端訪問。

規(guī)則從上往下執(zhí)行,如匹配則停止,不再往下匹配。

vim /usr/local/nginx/conf/nginx.conf

......

server {

location / {

......

##添加控制規(guī)則##

allow 192.168.10.20; #允許訪問的客戶端 IP

deny all; #拒絕其它IP客戶端訪問

}

}

systemctl restart nginx

3.4、基于域名的 Nginx 虛擬主機(jī)

--------基于域名的 Nginx 虛擬主機(jī)--------

1.為虛擬主機(jī)提供域名解析

echo "192.168.xx www.yc.com www.benet.com" >> /etc/hosts

2.為虛擬主機(jī)準(zhǔn)備網(wǎng)頁(yè)文檔

mkdir -p /var/www/html/benet

mkdir -p /var/www/html/yc

echo "

this is www.yc.com

" > /var/www/html/yc/index.html

echo "

this is www.benet.com

" > /var/www/html/benet/index.html

3.修改Nginx的配置文件

vim /usr/local/nginx/conf/nginx.conf

......

http {

......

server {

listen 80;

server_name www.yc.com; #設(shè)置域名www.yc.com

charset utf-8;

access_log logs/www.yc.access.log; #設(shè)置日志名

location / {

root /var/www/html/yc; #設(shè)置www.yc.com 的工作目錄

index index.html index.php;

}

error_page 500 502 503 504 /50x.html;

location = 50x.html{

root html;

}

}

server {

listen 80;

server_name www.benet.com; #設(shè)置域名www.benet.com

charset utf-8;

access_log logs/www.benet.access.log;

location / {

root /var/www/html/benet;

index index.html index.php;

}

error_page 500 502 503 504 /50x.html;

location = 50x.html{

root html;

}

}

}

?4.重啟服務(wù),訪問測(cè)試 systemctl restart nginx

瀏覽器訪問 http://www.yc.com http://www.benet.com

3.5、基于IP 的 Nginx 虛擬主機(jī)

--------基于IP 的 Nginx 虛擬主機(jī)--------

ifconfig ens33:0 192.168.10.40 netmask 255.255.255.0

vim /usr/local/nginx/conf/nginx.conf

------------------------------------------------------------------------------------------

http {

......

server {

listen 192.168.10.19:80; #設(shè)置監(jiān)聽地址192.168.10.19

server_name www.yc.com;

charset utf-8;

access_log logs/www.yc.access.log;

location / {

root /var/www/html/yc;

index index.html index.php;

}

error_page 500 502 503 504 /50x.html;

location = 50x.html{

root html;

}1

}

server {

listen 192.168.10.40:80; #設(shè)置監(jiān)聽地址192.168.10.40

server_name www.benet.com;

charset utf-8;

access_log logs/www.benet.access.log;

location / {

root /var/www/html/benet;

index index.html index.php;

}

error_page 500 502 503 504 /50x.html;

location = 50x.html{

root html;

}

}

}

systemctl restart nginx 瀏覽器訪問 http://192.168.10.40 ?http://192.168.80.11

3.6、基于端口的 Nginx 虛擬主機(jī)

--------基于端口的 Nginx 虛擬主機(jī)--------

vim /usr/local/nginx/conf/nginx.conf

......

http {

......

server {

listen 192.168.80.10:8080; #設(shè)置監(jiān)聽 8080 端口

server_name www.kgc.com;

charset utf-8;

access_log logs/www.kgc.access.log;

location / {

root /var/www/html/kgc;

index index.html index.php;

}

error_page 500 502 503 504 /50x.html;

location = 50x.html{

root html;

}

}

server {

listen 192.168.80.10:8888; #設(shè)置監(jiān)聽 8888 端口

server_name www.benet.com;

charset utf-8;

access_log logs/www.benet.access.log;

location / {

root /var/www/html/benet;

index index.html index.php;

}

error_page 500 502 503 504 /50x.html;

location = 50x.html{

root html;

}

}

}

?systemctl restart nginx 瀏覽器訪問 http://192.168.80.11:8080 ?http://192.168.80.11:8888 ?

四、lnmp架構(gòu)部署及應(yīng)用

Nginx 工作原理 這里需要結(jié)合 Apache 的工作,對(duì) PHP 文件處理過(guò)程的區(qū)別

1:Nginx 是通過(guò) php-fpm 這個(gè)服務(wù)來(lái)處理 php 文件

2:Apache 是通過(guò) libphp5.so 這個(gè)模塊來(lái)處理 php 文件 Apache: Apache 的 libphp5.so 隨著 Apache 服務(wù)器一起運(yùn)行,而 Nginx 和 php-fpm 是各自獨(dú)立運(yùn)行,所 以在運(yùn)行過(guò)程中,Nginx 和 php-fpm 都需要分別啟動(dòng)! 修改 Nginx 配置文件,啟動(dòng) Nginx 服務(wù),修改 php 配置文件,啟動(dòng) php-fpm 服務(wù) 反向代理 對(duì)應(yīng)頁(yè)面Ip:端口

具體過(guò)程【前置資源】

柚子快報(bào)邀請(qǐng)碼778899分享:linux Nginx服務(wù)

http://yzkb.51969.com/

推薦閱讀

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19540158.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄