一看就會的Nginx學習教程(千萬別告訴其他人)

前言

公司產品出現瓶頸?

公司專案剛剛上線的時候,併發量小,使用者使用的少,所以在低併發的情況下,一個jar包啟動應用就夠了,然後內部tomcat返回內容給使用者。

一看就會的Nginx學習教程(千萬別告訴其他人)

但是慢慢的,使用我們平臺的使用者越來越多了,併發量慢慢增大了,這時候一臺伺服器滿足不了我們的需求了。

一看就會的Nginx學習教程(千萬別告訴其他人)

於是我們橫向擴充套件,又增加了伺服器。這個時候幾個專案啟動在不同的伺服器上,使用者要訪問,就需要增加一個代理伺服器了,透過代理伺服器來幫我們轉發和處理請求。

一看就會的Nginx學習教程(千萬別告訴其他人)

我們希望這個代理伺服器可以幫助我們接收使用者的請求,然後將使用者的請求按照規則幫我們轉發到不同的伺服器節點之上。這個過程使用者是無感知的,使用者並不知道是哪個伺服器返回的結果,我們還希望他可以按照伺服器的效能提供不同的權重選擇。保證最佳體驗!所以我們使用了Nginx。

什麼是Nginx?

Nginx (engine x) 是一個高效能的HTTP和反向代理web伺服器,同時也提供了IMAP/POP3/SMTP服務。Nginx是由伊戈爾·賽索耶夫為俄羅斯訪問量第二的Rambler。ru站點(俄文:Рамблер)開發的,第一個公開版本0。1。0釋出於2004年10月4日。2011年6月1日,nginx 1。0。4釋出。

其特點是佔有記憶體少,併發能力強,事實上nginx的併發能力在同類型的網頁伺服器中表現較好,中國大陸使用nginx網站使用者有:百度、京東、新浪、網易、騰訊、淘寶等。在全球活躍的網站中有12。18%的使用比率,大約為2220萬個網站。

Nginx 是一個安裝非常的簡單、配置檔案非常簡潔(還能夠支援perl語法)、Bug非常少的服務。Nginx 啟動特別容易,並且幾乎可以做到7*24不間斷執行,即使執行數個月也不需要重新啟動。你還能夠不間斷服務的情況下進行軟體版本的升級。

Nginx程式碼完全用C語言從頭寫成。官方資料測試表明能夠支援高達 50,000 個併發連線數的響應。

Nginx作用?

Http代理,反向代理:作為web伺服器最常用的功能之一,尤其是反向代理。

正向代理

一看就會的Nginx學習教程(千萬別告訴其他人)

反向代理

一看就會的Nginx學習教程(千萬別告訴其他人)

Nginx提供的負載均衡策略有2種:內建策略和擴充套件策略。內建策略為輪詢,加權輪詢,Ip hash。擴充套件策略,就天馬行空,只有你想不到的沒有他做不到的。

輪詢

一看就會的Nginx學習教程(千萬別告訴其他人)

加權輪詢

一看就會的Nginx學習教程(千萬別告訴其他人)

iphash對客戶端請求的ip進行hash操作,然後根據hash結果將同一個客戶端ip的請求分發給同一臺伺服器進行處理,可以解決session不共享的問題。

一看就會的Nginx學習教程(千萬別告訴其他人)

動靜分離,在我們的軟體開發中,有些請求是需要後臺處理的,有些請求是不需要經過後臺處理的(如:css、html、jpg、js等等檔案),這些不需要經過後臺處理的檔案稱為靜態檔案。讓動態網站裡的動態網頁根據一定規則把不變的資源和經常變的資源區分開來,動靜資源做好了拆分以後,我們就可以根據靜態資源的特點將其做快取操作。提高資源響應的速度。

一看就會的Nginx學習教程(千萬別告訴其他人)

目前,透過使用Nginx大大提高了我們網站的響應速度,優化了使用者體驗,讓網站的健壯性更上一層樓!

Nginx的安裝

windows下安裝

1、下載nginx

http://nginx。org/en/download。html 下載穩定版本。

以nginx/Windows-1。16。1為例,直接下載 nginx-1。16。1。zip。

下載後解壓,解壓後如下:

一看就會的Nginx學習教程(千萬別告訴其他人)

2、啟動nginx

有很多種方法啟動nginx

(1)直接雙擊nginx。exe,雙擊後一個黑色的彈窗一閃而過

(2)開啟cmd命令視窗,切換到nginx解壓目錄下,輸入命令

nginx。exe

,回車即可

3、檢查nginx是否啟動成功

直接在瀏覽器位址列輸入網址 http://localhost:80 回車,出現以下頁面說明啟動成功!

一看就會的Nginx學習教程(千萬別告訴其他人)

4、配置監聽

nginx的配置檔案是conf目錄下的nginx。conf,預設配置的nginx監聽的埠為80,如果80埠被佔用可以修改為未被佔用的埠即可。

一看就會的Nginx學習教程(千萬別告訴其他人)

當我們修改了nginx的配置檔案nginx。conf 時,不需要關閉nginx後重新啟動nginx,只需要執行命令

nginx -s reload

即可讓改動生效

5、關閉nginx

如果使用cmd命令視窗啟動nginx, 關閉cmd視窗是不能結束nginx程序的,可使用兩種方法關閉nginx

(1)輸入nginx命令

nginx -s stop

(快速停止nginx) 或

nginx -s quit

(完整有序的停止nginx)

(2)使用taskkill

taskkill /f /t /im nginx。exe

taskkill是用來終止程序的,

/f是強制終止 。

/t終止指定的程序和任何由此啟動的子程序。

/im示指定的程序名稱 。

linux下安裝

1、安裝gcc

安裝 nginx 需要先將官網下載的原始碼進行編譯,編譯依賴 gcc 環境,如果沒有 gcc 環境,則需要安裝:

yum install gcc-c++

2、PCRE pcre-devel 安裝

PCRE(Perl Compatible Regular Expressions) 是一個Perl庫,包括 perl 相容的正則表示式庫。nginx 的 http 模組使用 pcre 來解析正則表示式,所以需要在 linux 上安裝 pcre 庫,pcre-devel 是使用 pcre 開發的一個二次開發庫。nginx也需要此庫。命令:

yum install -y pcre pcre-devel

3、zlib 安裝

zlib 庫提供了很多種壓縮和解壓縮的方式, nginx 使用 zlib 對 http 包的內容進行 gzip ,所以需要在 Centos 上安裝 zlib 庫。

yum install -y zlib zlib-devel

4、OpenSSL 安裝

OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼演算法、常用的金鑰和證書封裝管理功能及 SSL 協議,並提供豐富的應用程式供測試或其它目的使用。

nginx 不僅支援 http 協議,還支援 https(即在ssl協議上傳輸http),所以需要在 Centos 安裝 OpenSSL 庫。

yum install -y openssl openssl-devel

5、下載安裝包

手動下載。tar。gz安裝包,地址:https://nginx。org/en/download。html

一看就會的Nginx學習教程(千萬別告訴其他人)

下載完畢上傳到伺服器上 /root

6、解壓

tar -zxvf nginx-1。18。0。tar。gz

cd nginx-1。18。0

一看就會的Nginx學習教程(千萬別告訴其他人)

7、配置

使用預設配置,在nginx根目錄下執行

。/configure

make

make install

查詢安裝路徑:

whereis nginx

一看就會的Nginx學習教程(千萬別告訴其他人)

Nginx常用命令

cd /usr/local/nginx/sbin/

。/nginx 啟動

。/nginx -s stop 停止

。/nginx -s quit 安全退出

。/nginx -s reload 重新載入配置檔案

ps aux|grep nginx 檢視nginx程序

啟動成功訪問 伺服器ip:80

一看就會的Nginx學習教程(千萬別告訴其他人)

注意:如何連線不上,檢查阿里雲安全組是否開放埠,或者伺服器防火牆是否開放埠!

相關命令:

# 開啟

service firewalld start

# 重啟

service firewalld restart

# 關閉

service firewalld stop

# 檢視防火牆規則

firewall-cmd ——list-all

# 查詢埠是否開放

firewall-cmd ——query-port=8080/tcp

# 開放80埠

firewall-cmd ——permanent ——add-port=80/tcp

# 移除埠

firewall-cmd ——permanent ——remove-port=8080/tcp

#重啟防火牆(修改配置後要重啟防火牆)

firewall-cmd ——reload

# 引數解釋

1、firwall-cmd:是Linux提供的操作firewall的一個工具;

2、——permanent:表示設定為持久;

3、——add-port:標識新增的埠

最後

馬上金三銀四,整理一份面試資料《Java面試BAT通關手冊》,覆蓋了Java核心技術、JVM、Java併發、SSM、微服務、資料庫、資料結構等等。

獲取方式

:點選後臺

私信

面試

領取即可,後續更多內容會陸續奉上。

一看就會的Nginx學習教程(千萬別告訴其他人)