Nginx學習

1、Nginx基礎知識

1.1認識Nginx

百科給出的解釋:

Nginx學習筆記

總結:

Nginx是一個高性能的Http和反向代理web服務器。

Nginx特點:

1、跨平臺Nginx可以在?多數類unix操作系統上編譯運?,?且也有windows版本。

2、Nginx學習成本比較低。

3、高并發(fā)、性能好。

4、穩(wěn)定性好、宕機概率低。

1.2Nginx核心運用場景

1.2.1Http服務器

性能?常?,?常注重效率,能夠經受?負載的考驗。

?持50000個并發(fā)連接數,不僅如此,CPU和內存的占?也?常的低,10000個沒有活動的連接才占?2.5M的內存。

1.2.2反向代理服務器

正向代理

在瀏覽器中配置代理服務器信息,通過代理服務器訪問目標網站,代理服務器收到目標網站的響應之后,會把響應信息返回給我們的瀏覽器上?!竞唵卫斫饩褪峭ㄟ^代理服務器去訪問一個網點】

正向代理圖解

Nginx學習筆記

反向代理

瀏覽器客戶端發(fā)送請求到反向代理服務器(?如Nginx),由反向代理服務器去選擇原始服務器提供服務獲取結果響應,最終再返回給客戶端瀏覽器?!菊f白了就是 就是客戶端看不到真實的服務器,看到的都是代理服務器,而這個代理服務器將請求轉發(fā)到真實的服務器獲取到響應這個過程稱之為反向代理】

Nginx學習筆記

正向代理和反向代理的區(qū)別:

正向代理是通過代理服務器去連接到一個網站,而這個代理服務器屬于一個媒介,就算是沒有代理服務器,要訪問的網站也是對外可見的。

反向代理一般反向代理服務器和網站真實的服務器(比如Tomcat服務器)是一體的,真實的服務器對外是不可見的,只能通過反向代理服務器去訪問。

1.2.3負載均衡服務器

負載均衡的思想:當反向代理服務器收到請求之后會把請求轉發(fā)給真實的服務器,如果真實的服務器很多的時候,會按照一定的算法分發(fā)給其中的一臺服務器。如果請求量非常大的時候,負載均衡就是將請求分發(fā)給各個真實的服務器來有效達到降低真實服務器的壓力。這個就是負載均衡的思想。

1.2.4動靜分離

動靜分離思想就是說,由Nginx服務器直接托管靜態(tài)資源,當用戶請求的時候判斷如果是靜態(tài)資源的話直接通過Nginx返回給客戶端,如果是動態(tài)資源的話在請求轉發(fā)給真實的服務器。用來降低服務器的真實壓力。

2、Nginx基礎使用

2.1Nginx安裝

下載地址 http://nginx.org/en/download.html下載之后上傳到自己的服務器上進行解壓,在這里我使用的是nginx-1.17.8版。

進入解壓之后的目錄。

1)安裝nginx的依賴pcre、openssl、gcc、zlib

執(zhí)行:yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

2)執(zhí)行 ./configure 命令【如果出現權限不夠的話需要自己修改權限 chmod +x configure這個命令修改】

3)執(zhí)行make 命令 進行編譯。

4)執(zhí)行make install命令進行安裝。

這個時候已經安裝好了,安裝的目錄在/usr/local/nginx

啟動nginx服務器 cd /usr/local/nginx ./sbin/nginx

查看是否運行 ps -ef | grep nginx

Nginx學習筆記

如果出現兩個進程證明nginx已經安裝好了,直接訪問自己服務器的ip就能訪問,默認監(jiān)聽的是80端口。

2.2Nginx常用命令

./nginx 啟動nginx

./nginx -s stop 終?nginx(當然也可以找到nginx進程號,然后使?kill -9 殺掉nginx進程)

./nginx -s reload (重新加載nginx.conf配置?件)

2.3Nginx配置文件概述

Nginx核心配置文件nginx.conf

分三個模塊全局快、events塊、http塊。

1、 全局塊

從配置?件開始到events塊之間的內容,此處的配置影響nginx服務器整體的運?,?如worker進

程的數量、錯誤?志的位置等

Nginx學習筆記

2、events塊

events塊主要影響nginx服務器與?戶的?絡連接,?如worker_connections 1024,標識每個

workderprocess?持的最?連接數為1024

Nginx學習筆記

3、http塊

http塊是配置最頻繁的部分,虛擬主機的配置,監(jiān)聽端?的配置,請求轉發(fā)、反向代理、負載均衡

等。

Nginx學習筆記
Nginx學習筆記

3、Nginx應用-反向代理服務器

3.1反向代理配置案例

需求1:通過本機的反向代理服務器訪問本機的Tomcat服務器。

首先啟動服務器上的tomcat服務器,修改配置文件。

Nginx學習筆記

在使用命令./stbin/nginx -s reload重新啟動就可以訪問本機上的tomcat服務器了。

需求2:我輸入localhost/abc可以訪問到tomcat1 輸入localhost/def訪問到tomcat2

首先需要在服務器上啟動兩個tomcat兩個tomcat端口號不能保持一致 比如8080 和 8081,然后在nginx中進行配置。

Nginx學習筆記

3.2location配置規(guī)則

對于location后邊跟的匹配規(guī)則:

①普通路徑 location /abc {... }

②正則匹配 location ~/abc {...}

③不區(qū)分??寫的正則匹配 location ~* /abc { }

④匹配路徑的前綴 location ^~ /abc { }

⑤精確匹配 location = /abc { }

優(yōu)先級⑤>④>③>②>①

4、Nginx應用-負載均衡

4.1Nginx基本使用

需求:訪問同一個url將流量打到不同的機器上。

首先準備兩個tomcat開啟兩個不同的端口然后對nginx進行配置。

Nginx學習筆記

4.2Nginx負載均衡策略

1、輪詢

默認策略,每個請求按時間順序逐?分配到不同的服務器,如果某?個服務器下線,能?動剔除

upstream hello{

server 127.0.0.1:8080;server 127.0.0.1:8082;

}

location /abc {

proxy_pass http://hello/;

}

2、weight權重

weight代表權重,默認每?個負載的服務器都為1,權重越?那么被分配的請求越多(?于服務器性能不均衡的場景)

upstream hello {

server 127.0.0.1:8080 weight=1;

server 127.0.0.1:8080 weight=1;

}

3、ip_hash

每個請求按照ip的hash結果分配,每?個客戶端的請求會固定分配到同?個?標服務器處理,可以解決session問題。

upstream hello{

ip_hash;

server 127.0.0.1:8080;

server 127.0.0.1:8081;

}

5、Nginx應用-動靜分離

首先需要將靜態(tài)資源文件放在 /usr/local/nginx根目錄下

在根目錄下自定義一個文件夾 比如staticData在這個目錄下在創(chuàng)建一個static目錄等于現在靜態(tài)資源文件都放在/usr/local/nginx/staticData/static目錄下

Nginx配置文件:實在server下邊在創(chuàng)建一個標簽。

Nginx學習筆記

訪問路徑可以直接是http://127.0.0.1/static/helloworld.html

6、Nginx進程模型講解

6.1Nginx進程模型

Nginx啟動后,以多進程?式在后臺運?,包括?個Master進程和多個Worker進程,Master進程是領導,是??,Worker進程是?活的?弟。

Nginx學習筆記

master進程

主要是管理worker進程,?如:

1)接收外界信號向各worker進程發(fā)送信號(./nginx -s reload)。

2)監(jiān)控worker進程的運?狀態(tài),當worker進程異常退出后Master進程會?動重新啟動新的worker進程等。

worker進程

worker進程具體處理?絡請求。多個worker進程之間是對等的,他們同等競爭來?客戶端的請求,各進程互相之間是獨?的。?個請求,只可能在?個worker進程中處理,?個worker進程,不可能處理其它進程的請求。worker進程的個數是可以設置的,?般設置與機器cpu核數?致【直接在配置文件的第一行就能配置】。

模型圖

Nginx學習筆記

6.2命令處理說明

以 ./nginx -s reload 來說明nginx信號處理這部分

1)master進程對配置?件進?語法檢查

2)嘗試配置(?如修改了監(jiān)聽端?,那就嘗試分配新的監(jiān)聽端?)

3)嘗試成功則使?新的配置,新建worker進程

4)新建成功,給舊的worker進程發(fā)送關閉消息

5)舊的worker進程收到信號會繼續(xù)服務,直到把當前進程接收到的請求處理完畢后關閉所以reload之后worker進程pid是發(fā)?了變化的

Nginx學習筆記

在執(zhí)行完reload之后worker的pid發(fā)生了變化證明reload是從新創(chuàng)建了一個worker進程。

6.3worker進程處理請求部分的說明

例如,我們監(jiān)聽9003端?,?個請求到來時,如果有多個worker進程,那么每個worker進程都有

可能處理這個鏈接。

master進程創(chuàng)建之后,會建?好需要監(jiān)聽的的socket,然后從master進程再fork出多個worker進程。所以,所有worker進程的監(jiān)聽描述符listenfd在新連接到來時都變得可讀。

nginx使?互斥鎖來保證只有?個worker進程能夠處理請求,拿到互斥鎖的那個進程注冊listenfd讀事件,在讀事件?調?accept接受該連接,然后解析、處理、返回客戶端

6.4nginx多進程模型好處

1、每個worker進程都是獨?的,不需要加鎖,節(jié)省開銷

2、每個worker進程都是獨?的,互不影響,?個異常結束,其他的照樣能提供服務

3、多進程模型為reload熱部署機制提供了?撐

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1.架構概覽 了解Nginx的架構,能夠幫助我們更加清楚的了解Nginx的組成部分,以及了解Nginx是怎么進行工...
    Tian_Peng閱讀 282評論 0 0
  • 一 .特點 1.1 應用情況Nginx做為一個強大的Web服務器軟件,具有高性能、高并發(fā)性和低內存占用的特點。此外...
    InnocenceYWQ閱讀 353評論 0 1
  • Nginx簡介 ??Nginx 是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP服務...
    spliteJM閱讀 1,297評論 1 19
  • 本篇來學習一下nginx的相關配置。 #user nobody ;指定用戶。如不指定就是nobody。指定用戶有什...
    北你妹的風閱讀 308評論 0 0
  • 久違的晴天,家長會。 家長大會開好到教室時,離放學已經沒多少時間了。班主任說已經安排了三個家長分享經驗。 放學鈴聲...
    飄雪兒5閱讀 7,866評論 16 22

友情鏈接更多精彩內容