1 Nginx介紹
Nginx 是一個高性能的HTTP和反向代理web服務器,因它的穩定性、豐富的功能集、簡單的配置文件和低系統資源的消耗而聞名,其特點是占有內存少,并發能力強,能夠支持高達5w并發連接,實際生產環境中可以支撐2-4萬并發連接數。
Nginx的所有配置基本都是在nginx.conf文件中進行配置。
2.1 安裝nginx(windows安裝方法)
1. 下載Nginx:
http://nginx.org/en/download.html
2. 解壓nginx.rar壓縮包,并進入nginx目錄,雙擊nginx.exe啟動。
3. 打開瀏覽器訪問 http://127.0.0.1 如果出現以下畫面則表示Nginx啟動成功。
-- 驗證Nginx是否啟動成功
2.2 安裝Nginx(linux安裝方法)
linux服務安裝Nginx需要提前安裝一些依賴,相比Windows安裝有一些繁瑣,所以給大家提供了一鍵安裝Nginx的腳本
下載腳本鏈接:https://pan.baidu.com/s/1NP5AHq17Djce2_T7tnP4vw?pwd=nzz5
下載下來后將下圖中的兩個文件(Nginx安裝包和sh腳本)上傳到服務器,
然后執行./nginx-install.sh即可完成一鍵安裝;Nginx將會安裝到 /usr/local/nginx。
.sh腳本
如果./nginx-install.sh無法運行則需要設置文件權限,執行以下命令chmod 755 nginxinstall.sh,然后重新執行命令即可。
3 第三節反向代理
3.1 什么是反向代理
反向代理:指通過代理服務器(Nginx)來接受網絡上的連接請求,然后將請求轉發給內部網絡上的其它服務器,并從服務器上得到的結果返回給網絡上請求連接的客戶端,此時代理服務器對外就表現為一個反向代理服務器。
反向代理案例
3.2 演示反向代理
1、在nginx.conf中配置反向代理,可直接將以下代碼替換到你本地nginx.conf中
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type Application/octet-stream;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location /a/ {
proxy_pass http://127.0.0.1:8080/;
}
location /b/ {
proxy_pass http://127.0.0.1:8081/;
}
}
}
2、后臺啟動兩個端口8080和8081;
3、 瀏覽器分別訪問127.0.0.1/a/${接口路徑} 127.0.0.1/b/${接口路徑} 查看效果。
4 Nginx轉發路徑拼接規則
location中攔截參數結尾帶/和不帶/區別 ?
例如:location /a 和 /a/有什么區別 ?
- 當結尾加上了/,相當于是絕對根路徑,則nginx不會把location中匹配的路徑部分代理走;
- 如果沒有/,則會把匹配的路徑部分也給代理走。
5 第五負載均衡
5.1 什么是負載均衡、故障轉移
負載均衡
按照一定的算法【權重、輪詢、IP綁定】,將客戶端請求轉發到不同應用服務器上,減輕單個服務器壓力,提高系統并發量。
故障轉移
通過心跳檢測的方式,判斷應用服務器當前是否可以正常工作,如果服務器期宕掉,自動將請求發送到其他正常的應用服務器。
如果檢查到發生故障的應用服務器恢復工作,則會重新加入負載均衡隊列進行工作。
5.2 負載均衡的三種策略
1. 輪詢(默認)
將請求按順序輪流均勻的分配到后端服務器上。
upstream testserver {
server 127.0.0.1:8080;
server 127.0.0.1:8180;
}
2. IP綁定
按照訪問ip的hash結果進行取模運算,得到的結果便是客服端要訪問服務器,可以解決session的問題。
upstream testserver {
ip_hash;
server 127.0.0.1:8080;
server 127.0.0.1:8180;
}
3. 指定權重
指定輪詢幾率,weight越大,負載的權重就越大,用于后端服務器性能不均的情況。
upstream testserver {
server 127.0.0.1:8080 weight=10;
server 127.0.0.1:8180 weight=10;
}
5.3 演示負載均衡&故障轉移(輪訓)
- 在nginx.conf中配置,可直接將以下代碼替換到你本地nginx.conf中
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
keepalive_timeout 65;
#輪訓負載均衡
upstream testserver {
server 127.0.0.1:8080;
server 127.0.0.1:8180;
}
server {
listen 80;
server_name localhost;
location /a/ {
proxy_pass http://testserver/;
}
}
}
2.后臺啟動兩個端口8080和8180;
3.瀏覽器多次訪問127.0.0.1/a/${接口路徑}查看輪訓效果。