一篇文章帶你了解輕量級Web伺服器——Nginx簡單入門
一篇文章帶你了解輕量級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伺服器系統上,我們這裡使用虛擬機來進行操作:
- 安裝依賴包
# 我們首先來下載一些關於Nginx安裝的依賴包
yum -y install gcc pcre-devel zlib-devel openssl oepnssl-devel
- 下載Nginx安裝包
# 我們藉助wget網上下載插件來實現
yum install wget
# 我們使用wget下載安裝包
wget //nginx.org/download/nginx-1.16.1.tar.gz
- 解壓安裝包
# 解壓安裝包在當前文件夾root
tar -zxvf nginx-1.16.1.tar.gz
- 跳轉頁面,進入內部
# 跳轉頁面
cd nginx-1.16.1
- 安裝Nginx在usr目錄下
# 創建文件夾
mkdir /usr/local/nginx
# 安裝
./configure --prefix=/usr/local/nginx
- 安裝
# 安裝
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 //192.168.44.129:8080; #我們將該請求轉移到//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