文章目錄
1. Nginx 概述 1.1 Nginx 介紹
Nginx 是一款輕量級的 Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器。其特點是占有內存少,并發能力強,實際上 Nginx 的并發能力在同類型的網頁服務器中表現較好,國內使用 Nginx 的網站有:百度、京東、淘寶、騰訊等。
Nginx 官網:
1.2 Nginx 下載和安裝
Nginx 官網下載地址:
Linux 安裝 Nginx 過程:
安裝依賴包
yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
下載 Nginx 安裝包
wget https://nginx.org/download/nginx-1.16.1.tar.gz
# 如果未安裝 wget 命令,則可以通過以下命令進行安裝
yum install wget
解壓
tar -zxvf nginx-1.16.1.tar.gz
配置 Nginx 安裝目錄為 /usr/local/nginx
# 先創建安裝的目錄
mkdir -p /usr/local/nginx
# 配置安裝目錄
cd nginx-1.16.1
./configure --prefix=/usr/local/nginx
如果不配置安裝的路徑,那么安裝后可執行文件默認存放在 /usr/local/bin,庫文件默認存放在 /usr/local/lib,配置文件默認存放在 /usr/local/etc,其他的資源文件存放在 /usr/local/share。
編譯和安裝 Nginx
make && make install
通過以上步驟,Nginx 就已經安裝好了,切換到其安裝目錄我們就能看到以下幾個目錄
1.3 Nginx 目錄結構
安裝完 Nginx 后,我們就能看到以下幾個目錄:
目錄說明
conf
存放配置文件
html
存放靜態文件(html、css、js)
logs
存放日志文件
sbin
存放腳本文件
在這些目錄中還有幾個重要的文件:
文件說明
conf/nginx.conf
Nginx 配置文件
sbin/nginx
二進制文件,用于啟動、停止 Nginx 服務
Nginx 目錄和文件總覽:
2. Nginx 命令 命令說明
./nginx -v
查看 Nginx 版本
./nginx -t
檢查配置文件正確性
./nginx
啟動 Nginx 服務
./nginx -s stop
停止 Nginx 服務
./nginx -s
重新加載配置文件(當修改 Nginx 配置文件后,需要重新加載才能生效)
以上命令都需要進入 Nginx 的安裝目錄的 sbin 目錄才能執行,因此執行這些命令的時候其實是有點麻煩的。為了解決這個問題,能夠在任何路徑都能執行這些命令,可以將 Nginx 的二進制文件的路徑配置到系統的環境變量中。
配置方式:
進入 /etc/ 文件進行編輯
vim /etc/profile
在 Path 變量后面追加 nginx 的 sbin 路徑
讓修改后的 /etc/ 立即生效
source /etc/profile
3. Nginx 配置文件結構
Nginx 配置文件(conf/nginx.conf)整體分為三部分:
4. Nginx 具體應用 4.1 部署靜態資源
Nginx 可以作為靜態 web 服務器來部署靜態資源。靜態資源指在服務端真實存在并且能夠直接展示的一些文件,比如 html、css、hs、圖片、視頻等資源。
相對于 ,Nginx 處理靜態資源的能力更加高效,所以在生產環境下,一般都會將靜態資源部署到 Nginx 中。將靜態資源部署到 Nginx 非常簡單,只需要將文件復制到 Nginx 安裝目錄的 html 目錄即可。
除此之外,如果有需要還可以對 Nginx 的配置文件的 http 塊的 塊的參數進行指定的修改,參數說明如下:
4.2 反向代理 4.2.1 介紹
代理就像是我們去購買海外的東西,找了個中間人幫我們去買物品并且帶了回來。
從系統的角度來說,直接訪問就是瀏覽器的請求直接到了最終的服務器,中間沒有經過任何的代理服務器,否則就是通過了代理的形式去訪問了服務器。
代理(proxy)又分為正向代理( proxy)和反向代理( proxy)。
正向代理( proxy):
是一個位于客戶端和原始服務器之間的服務器,為了從原始服務器取得內容,客戶端向代理發送一個請求并指定目標(原始服務器),然后代理向原始服務器轉交請求并將獲得的內容返回給客戶端。
一個正向代理服務器并沒有直接響應請求的能力,就像商店不生產方便面一樣,它不過是把請求轉發到最終的網頁服務器上,再把后者的響應再轉發給請求者。
那么瀏覽器只知道最終瀏覽器的地址nginx反向代理要帶端口號,但是如何知道代理服務器在哪呢?
這個需要我們主動的告訴瀏覽器,即主動配置代理服務器。
正向代理的典型用途是為在防火墻內的局域網客戶端提供訪問 的途徑。
反向代理( proxy):
反向代理服務器位于用戶于目標服務器之間,但是對于用戶而言,反向代理服務器就相當于目標服務器nginx反向代理要帶端口號,即用戶直接訪問反向代理服務器就可以獲得目標服務器的資源,反向代理服務器負責將請求轉發給目標服務器。
用戶不需要知道目標服務器的地址,也無須在用戶端做任何設定。
反向代理與正向代理的一個很大區別就是,它不需要客戶端去做什么配置,并沒有什么配置代理服務器的操作。
如果說正向代理是主動配置,主動走代理,那么反向代理則是”被代理“。從這點上看,反向代理有時又稱為“透明代理”,也即是瀏覽器都不知道自己被代理了,瀏覽器以為發給它響應的就是最終的網頁服務器,其實不過是個“代理”。
4.2.2 配置反向代理
配置反向代理只需要修改 nginx.conf 配置文件即可,需要配置的參數如下:
server {
listen 81; # 監聽端口
server_name localhost; # 服務器名稱
location / {
proxy_pass http://目標服務器IP:端口號; #反向代理配置,將請求轉發到指定服務
}
}
配置后記得重新加載配置文件。
4.3 負載均衡 4.3.1 介紹
早期的網站流量和業務功能都比較簡單,單臺服務器就可以滿足基本需求,但是隨著互連網的發展,業務流量越來越大并且業務邏輯也越來越復雜,單臺服務器的性能及單點故障問題就凸顯出來了,因此需要多臺服務器組成應用集群,進行性能的水平擴展以及避免單點故障出現。
4.3.2 配置負載均衡
配置負載均衡只需要修改 nginx.conf 配置文件即可,需要配置的參數如下:
upstream targetserver { # upstream 指令可以定義一組服務器
server 服務器1IP:端口號;
server 服務器2IP:端口號;
}
server {
listen 8080; # 監聽端口
server_name localhost; # 服務器名稱
location / {

proxy_pass http://targetserver; # 請求轉發的一組服務器的名稱
}
}
配置后記得重新加載配置文件。
4.3.3 負載均衡策略 名稱說明
輪詢
默認方式
權重方式,權重越大分配的機率越高
依據 ip 分配方式
依據最少連接方式
依據 url 分配方式
fair
依據響應時間方式
輪詢:默認方式,當刷新瀏覽器時,會發現目標服務器是被輪流著訪問。
upstream targetserver { # upstream 指令可以定義一組服務器
server 服務器1IP:端口號;
server 服務器2IP:端口號;
}
:通過分配權重的方式,權重越大分配的機率越高。
upstream targetserver { # upstream 指令可以定義一組服務器
server 服務器1IP:端口號 weight=10;
server 服務器2IP:端口號 weight=5;
}
:通過客戶端的 ip 地址經過哈希算法來分配到一個服務器上,之后同一個 ip 訪問時都會固定的訪問一個服務器。
通過 能夠解決 丟失的問題,即用戶第一次在A服務器登陸后,如果下次請求訪問到B服務器的話,那么登錄信息則會丟失。
upstream targetserver { # upstream 指令可以定義一組服務器
ip_hash;
server 服務器1IP:端口號;
server 服務器2IP:端口號;
}
:分配服務器中最少連接的那個。
upstream targetserver { # upstream 指令可以定義一組服務器
least_conn;
server 服務器1IP:端口號;
server 服務器2IP:端口號;
}
:按照訪問的 url 經過哈希算法來分配到一個服務器上,之后同一個 url 訪問都會訪問到固定的一個服務器。
適合后端服務器作為緩存時使用。
upstream targetserver { # upstream 指令可以定義一組服務器
hash $request_uri;
hash_methond cr32; # hash 算法
server 服務器1IP:端口號;
server 服務器2IP:端口號;
}
fair:根據后端服務器的響應時間來分配請求,響應時間短的分配優先。
upstream targetserver { # upstream 指令可以定義一組服務器
fair;
server 服務器1IP:端口號;
server 服務器2IP:端口號;
}