一篇文章帶你瞭解輕量級Web伺服器——Nginx簡單入門

2022-10-28 09:01:08

一篇文章帶你瞭解輕量級Web伺服器——Nginx簡單入門

Nginx是一款輕量級的Web伺服器/反向代理伺服器及電子郵件代理伺服器

在本篇中我們會簡單介紹Nginx的特點,安裝,相關指令使用以及設定資訊和具體應用等

本篇內容屬於《瑞吉外賣》的知識科普部分,有興趣可以檢視一下《瑞吉外賣》的相關文章內容

Nginx概述

我們先來對Nginx做一個的簡單的瞭解

Nginx介紹

Nginx是一款輕量級的Web伺服器/反向代理伺服器及電子郵件代理伺服器

本身具有佔用記憶體少,並行能力強等特點,其並行能力在同型別的網頁伺服器中表現較好,包括百度,京東等眾多伺服器都是採用Nginx

Nginx是由伊戈爾·賽索耶夫為俄羅斯存取量第二的Rambler.ru站點開發的,第一個公開版本0.1.0釋出於2004年10月4日。

下面附上官方:nginx news

Nginx下載與安裝

我們的Nginx通常使用在Linux伺服器系統上,我們這裡使用虛擬機器器來進行操作:

  1. 安裝依賴包
# 我們首先來下載一些關於Nginx安裝的依賴包
yum -y install gcc pcre-devel zlib-devel openssl oepnssl-devel
  1. 下載Nginx安裝包
# 我們藉助wget網上下載外掛來實現
yum install wget

# 我們使用wget下載安裝包
wget https://nginx.org/download/nginx-1.16.1.tar.gz
  1. 解壓安裝包
# 解壓安裝包在當前資料夾root
tar -zxvf nginx-1.16.1.tar.gz
  1. 跳轉頁面,進入內部
# 跳轉頁面
cd nginx-1.16.1
  1. 安裝Nginx在usr目錄下
# 建立資料夾
mkdir /usr/local/nginx

# 安裝
./configure --prefix=/usr/local/nginx
  1. 安裝
# 安裝
make && make install

至此我們的Nginx安裝完成

Nginx目錄介紹

在安裝完Nginx後,我們可以到相應檔案下檢視,可以看到主要分為四個檔案包:

  • conf:存放組態檔
  • html:存放靜態資源
  • logs:存放紀錄檔資訊
  • sbin:存放二進位制檔案

其中我們主要使用的兩個檔案是:

  • conf/nginx.conf:用於修改nginx設定資訊
  • sbin/nginx:用於啟動停止nginx服務

這裡我們介紹一個Linux外掛,可以詳細檢視該目錄下所有的檔案內容:

# Tree外掛(需要先下載yum install tree)
tree

我們可以看到其檔案邏輯結構:

Nginx命令

下面我們將著重介紹幾個Nginx常用命令

Nginx檢視版本號

首先我們需要來到sbin目錄下:

# 跳轉頁面
cd /usr/local/nignx/sbin

我們使用檢視命令:

# 檢視版本號
./nginx -v

Nginx檢查正確性

首先我們需要來到sbin目錄下:

# 跳轉頁面
cd /usr/local/nignx/sbin

我們使用檢查命令:

# 檢查版本以及設定資訊
./nginx -t

Nginx啟動與停止

首先我們需要來到sbin目錄下:

# 跳轉頁面
cd /usr/local/nignx/sbin

我們使用相關命令:

# 啟動命令
./nginx

# 停止命令
./nginx -s stop

# 重啟命令
./nginx -s reload

# 檢視nginx程序
ps -ef|grep nginx

Nginx組態檔

下面我們來簡單介紹一下組態檔

Nginx組態檔整體介紹

我們通常將其組態檔分為三部分:

  • 全域性塊:和Nginx執行相關的全域性設定
  • events塊:和網路連線相關的設定
  • http塊:代理,快取,紀錄檔記錄,虛擬主機設定

其中http塊還分為兩部分:

  • http全域性快
  • server塊

其中server還分為兩部分:

  • Server全域性快
  • location塊

我們需要注意的是:

  • http塊中可以設定多個Server塊,每個Server塊中可以設定多個location塊

我們可以到具體組態檔中去檢視相關設定:

# 檢視組態檔
vim /usr/local/nignx/conf/nignx.conf

# 以下為組態檔內容(已將#註釋部分刪除)

# 第一部分是全域性塊

worker_processes  1; # 這裡表示可以同時有多少個程序

# 第二部分是events塊

events {
    worker_connections  1024; # 單個工作程序可以允許同時建立外部連線的數量,數位越大,能同時處理的連線越多
}

# 第三部分是http塊,裡面包含了代理,快取,紀錄檔記錄,虛擬主機設定等相關資訊,我們後續會詳細介紹

http {
	
	# 3.1 http全域性塊
	
    include       mime.types;
    default_type  application/octet-stream;
    
    sendfile        on;

    keepalive_timeout  65;

	# 3.2 Server塊

    server {
    
    	# 3.2.1 Server全域性塊
    
        listen       80; 
        server_name  localhost; 

		# 3.2.2 location塊

        location / {
            root   html; 
            index  index.html index.htm; 
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        
}

Nginx具體應用

Nginx具有三方面應用,下面我們將一一講解

Nginx部署動態資源

Nginx可以作為靜態web伺服器來部署靜態資源。

靜態資源指在伺服器端真實存在並且能夠直接展示的一些檔案,比如常見的htm頁面、Css檔案、 js檔案、 圖片、視訊等資源。

我們可以直接將靜態資源放置在Nginx的html資料夾下即可完成部署,同時Nginx處理靜態資源的能力甚至相比於Tomcat來說更加高效

那麼Nginx為什麼能夠自動設定靜態資源呢?

# 主要依賴於我們的conf組態檔中的http塊中的Server塊

	# Server塊
	
    server {
    
    	# 3.2.1 Server全域性塊
    
        listen       80; # 表示監聽埠(即我們存取網頁的埠號,本機查詢為192.168.44.128:80)
        server_name  localhost; # 埠名稱(無所謂命名,一般是我們的域名)

		# 3.2.2 location塊

        location / {
            root   html; # 靜態資源來源(設定在html資料夾下,所以我們查詢靜態資源會在html資料夾下查詢)
            index  index.html index.htm; # 預設主頁,即存取192.168.44.128:80時出現的頁面
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        
	}

Nginx進行反向代理

在接觸反向代理之前我們先來講解正向代理:

  • 正向代理是一個位於使用者端和原始伺服器(origin server)之間的伺服器
  • 使用者端向代理傳送一個請求並指定目標(原始伺服器),然後代理向原始伺服器轉交請求並將獲得的內容返回給使用者端。

其正向代理的主要功能:

  • 正向代理的典型用途是為在防火牆內的區域網使用者端提供存取internet的途徑。

其正向代理的主要特點:

  • 正向代理一般是在使用者端設定代理伺服器,通過代理伺服器轉發請求,最終存取到目標伺服器。

正向代理圖:

然後我們再來介紹反向代理:

  • 反向代理也是是一個位於使用者端和原始伺服器(origin server)之間的伺服器
  • 但是對於使用者而言,反向代理伺服器就相當於目標伺服器,即用於直接存取反向代理伺服器就可以獲得目標伺服器的資源
  • 使用者不需要知道目標伺服器的地址,也無需在使用者端做任何事頂,反向代理伺服器會將使用者的請求轉發給目標伺服器並給出反饋

其反向代理的主要功能:

  • 官方可能擁有很多資源的入口,反向代理伺服器將作為統一的入口用來管理伺服器
  • 官方的伺服器大部分都在內網裡,我們的正常存取是無法存取成功的,因此需要藉助反向代理伺服器來進行存取

其反向代理的主要特點:

  • 反向代理一般是在伺服器端設定代理伺服器,使用者端通過代理伺服器轉發請求,最終存取到目標伺服器。

反向代理圖:

最後我們簡單介紹一下如何設定反向代理:

# 我們同樣來修改組態檔
vim /usr/local/nignx/conf/nignx.conf

# 進入後設定server塊

	# Server塊
	
    server {
    
    	# 3.2.1 Server全域性塊
    
        listen       82; # 表示監聽埠(即我們存取網頁的埠號,本機查詢為192.168.44.128:82)
        server_name  localhost; # 埠名稱(無所謂命名,一般是我們的域名)

		# 3.2.2 location塊

        location / {
            proxy_pass http://192.168.44.129:8080; #我們將該請求轉移到http://192.168.44.129:8080指定服務中
        }
        
	}

Nginx實現負載均衡

我們首先來簡單介紹一下負載均衡:

  • 早期網站流量和業務功能相對簡單,單臺伺服器可以滿足基本需求
  • 後期業務量逐漸增大,我們就需要採用多臺伺服器組成應用叢集,進行效能的水平拓展以及避免單點故障出現

我們來簡單解釋兩個概念:

  • 負載均衡器:將使用者請求根據對應的負載均衡演演算法分發到應用叢集中的一臺伺服器進行處理
  • 應用叢集:將一個應用部署到多臺機器上,形成應用叢集,接受負載均衡器分發的請求,進行業務處理並做出反饋

負載均衡圖:

最後我們簡單介紹一下如何設定負載均衡:

# 我們同樣來修改組態檔
vim /usr/local/nignx/conf/nignx.conf

# 首先我們需要在http中設定應用叢集

http {
	
	# 3.1 http全域性塊(設定應用叢集)
	
    include       mime.types;
    default_type  application/octet-stream;
    
    sendfile        on;

    keepalive_timeout  65;
    
    upstream targetserver{ # upstream表示定義應用叢集,targetserver為名稱
    	server 192.168.44.129:8080; # server表示設定其轉發伺服器埠,192.168.44.129:8080為自己設定即可
    	server 192.168.44.129:8081; # server表示設定其轉發伺服器埠,192.168.44.129:8081為自己設定即可
    }

	# 3.2 Server塊

    server {
    
    	# 3.2.1 Server全域性塊
    
        listen       8080; # 我們存取時採用192.168.44.128
        server_name  localhost;

		# 3.2.2 location塊

        location / {
            proxy_pass targetserver; #我們將該請求轉移到targetserver應用叢集中去
        }
        
}

結束語

該篇內容到這裡就結束了,希望能為你帶來幫助~

附錄

該文章屬於學習內容,具體參考B站黑馬程式設計師的Java專案實戰《瑞吉外賣》

這裡附上視訊連結:專案優化Day2-08-Nginx課程內容介紹&概述_嗶哩嗶哩_bilibili