從零開始入門Nginx

最近在騰訊雲租了個小霸王服務器,本來想把自己寫的博客傳上去,奈何我太菜搞不了,所以爲了不讓服務器發黴 ,正好學一下Nginx

一、簡介

1、反向代理
(1)正向代理
在客戶端(瀏覽器)配置代理服務器,通過代理服務器進行互聯網訪問。
在這裏插入圖片描述
在這裏插入圖片描述
(2)反向代理
在這裏插入圖片描述在這裏插入圖片描述
2、負載均衡
(1)單一服務器
缺點:隨着信息增長、訪問量和數據量的提升以及系統業務的複雜度增加,會造成服務器響應客戶端的請求緩慢,併發量大時可能會造成服務器直接崩潰
在這裏插入圖片描述
(2)負載均衡
增加服務器的數量,將請求分發到各個服務器上,將原來請求集中到單個服務器上的情況改爲分發到多個服務器上,將負載分發到不同的服務器
在這裏插入圖片描述
3、動靜分離
在這裏插入圖片描述在這裏插入圖片描述

二、Nginx的常用命令

使用nginx操作命令前提條件:必須進入nginx的目錄中==(/usr/local/nginx/sbin)==
命令:

  1. 查看nginx版本號
    ./nginx -v

  2. 啓動nginx
    ./nginx

  3. 關閉nginx
    ./nginx -s stop

  4. 重新加載nginx
    ./nginx -s reload
    修改nginx.conf文件後,需要重新加載nginx,配置文件纔會生效

三、Nginx的配置文件

1、配置文件位置/usr/local/nginx/conf/nginx.conf

2、nginx配置文件組成

#去掉註釋的精簡版本,原版中有許多註釋
worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;


    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

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

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

    }

}

nginx配置文件由三部分組成

  1. 第一部分:全局塊

    從配置文件開始到events塊之間的內容,主要會設置一些影響nginx服務器真題運行的配置指令,主要包括配置運行Nginx服務器的用戶(組)、允許生成的worker process數、進程PID存放路徑、日誌存放路徑和類型以及配置文件的引入等,大部分默認被註釋掉

#這是Nginx服務器併發處理服務的關鍵,worker process的值越大,可以支持的併發數量也越多,但是會受到硬件、軟件等設備的制約
worker_processes  1;
  1. 第二部分:events塊

    涉及的指令主要影響Nginx服務器與用戶的網絡連接,常用的設置包括是否開啓對多worker press下的網絡連接進行序列化,是否允許同時接受多個網絡連接,選取哪種事件驅動模型來處理連接請求,每個worker press可以同時支持的最大連接數等
    這部分配置對Nginx的性能影響較大,應根據不同情況採取不同配置

#這個例子表示每個worker press支持的最大連接數爲1024
events {
    worker_connections  1024;
}
  1. 第三部分:HTTP塊

    這算是Nginx服務器配置中最頻繁的部分,代理、緩存和日誌定義等絕大多數功能和第三方模塊的配置都在這裏
    需要注意:http塊也可以包括http全局塊、server塊
    ①http全局塊
    http全局塊配置的指令包括文件引入、MIME-TYPE的定義、日誌自定義、連接超時時間、單鏈接請求數上限等
    ②server塊
    這塊和虛擬主機有密切關係

    每個http塊可以包括多個server塊,每個server塊相當於一個虛擬主機
    每個server塊也可以分爲全局server塊,以及可以同時包含多個的location塊

    在這裏插入圖片描述

http {
    include       mime.types;
    default_type  application/octet-stream;


    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       80;  #監聽端口號
        server_name  localhost;  #主機名稱

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

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

    }

}

四、配置反向代理

實例一
實現效果:代開瀏覽器,在地址欄中輸入www.123.com,跳轉到Linux系統tomcat主頁面

1、準備工作
(1)安裝tomcat,使用默認端口8080
(2)對外開放訪問端口
firewall-cmd --add-port=8080/tcp --permanent
重新加載防火牆設置
firewall-cmd -reload
查看已經開放的端口號
firewall-cmd --list-all
(3)地址欄輸入 ip地址:8080 測試是否能進入tomcat主頁

訪問過程分析:
在這裏插入圖片描述
2、具體配置

  1. 在Windows系統的host文件進行域名和ip對應關係的配置(不要問我爲什麼是Windows,因爲我買不起別的系統的電腦)
    在這裏插入圖片描述在host文件中添加一行:ip地址 域名
    例如:129.204.18.121 www.123.com

  2. 在nginx進行請求轉發的配置(反向代理配置)
    在這裏插入圖片描述
    注:進入之後按先按a,之後才能進行編輯,退出時先按esc,之後使用 :wq 命令保存並退出

  3. 最終測試
    啓動nginx,輸出www.123.com,正常情況下跳轉到tomcat主頁面
    在這裏插入圖片描述

實例二
實現效果:使用nginx反向代理,根據訪問的路徑跳轉到不同端口的服務中
nginx監聽端口爲9001
訪問http://129.204.18.121:9001/edu/直接跳轉到127.0.0.1:8080
訪問http://129.204.18.121:9001/vod/直接跳轉到127.0.0.1:8081
1、準備工作

  1. 準備兩個tomcat服務器,端口爲8080、8081
    在端口爲8081的tomcat中修改默認端口爲8081

  2. 創建文件夾和測試頁面
    在這裏插入圖片描述在這裏插入圖片描述8080同理

2、具體配置

  1. 找到nginx的配置文件,在裏面進行反向代理的配置
    在這裏插入圖片描述
    注:修改完配置文件不要忘記重啓或者重新加載nginx服務器

  2. 開放對外端口號9001,8080,8081

  3. 最終測試
    在這裏插入圖片描述在這裏插入圖片描述

location指令說明
在這裏插入圖片描述
注:如果uri包含正則表達式,則必須要有在這裏插入圖片描述

五、配置負載均衡

實現效果:
(1)瀏覽器地址欄輸入地址http://129.204.18.121/due/a.html,將請求平均分配到8080和8081端口,負載均衡效果

1、準備工作
(1)準備兩臺tomcat服務器,一臺8080,一臺8081
(2)在兩臺tomcat裏面的webapps目錄中,創建名稱是edu文件夾,在edu文件夾中創建頁面a.html,用於測試在這裏插入圖片描述

2、具體配置

  1. 在nginx.conf配置文件中進行修改
    在這裏插入圖片描述
    在這裏插入圖片描述

  2. 重啓nginx

  3. 最終測試
    在這裏插入圖片描述在這裏插入圖片描述
    將我們的請求平均分配到了每個頁面
    注:第一次進入時,隨機進入這兩個頁面中的一個,之後每次刷新都會進入另一個頁面

3、Nginx中的負載均衡分配方式(策略)

  1. 輪詢(默認配置)
    每次請求按時間順序逐一分配到不同的後端服務器,如果後端服務器down掉,能自動剔除
  2. weight
    weight代表權重,默認爲1,權重越高分配的客戶越多
    在這裏插入圖片描述
  3. ip_hash
    每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個後端服務器,可以解決session的問題(比如保存到session的用戶名密碼)
    如果你第一次訪問到8080,那麼以後都會訪問8080,8081同
    在這裏插入圖片描述
  4. fair(第三方)
    按照後端服務器的響應時間來分配請求,響應時間短的優先分配
    在這裏插入圖片描述

六、配置動靜分離

在這裏插入圖片描述

1、準備工作
在Linux系統中準備靜態資源,用於進行訪問
在這裏插入圖片描述在www放一個html頁面,在image中放一張圖片

2、具體配置

  1. 在nginx.conf文件中進行配置
    在這裏插入圖片描述

  2. 重啓nginx

  3. 最終測試
    在這裏插入圖片描述在這裏插入圖片描述

七、配置高可用的集羣

1、什麼是Nginx的高可用
問題:nginx服務器宕機導致請求無法轉發
在這裏插入圖片描述
高可用:準備兩個nginx服務器,當主服務器宕機時,切換到備份nginx服務器作爲主服務器繼續工作。還需要對外設置一個虛擬ip,同時將虛擬ip綁定到兩臺nginx服務器中,通過keepalived進行檢測,訪問時都是通過虛擬ip進行訪問

keepalived:相當於一個路由,裏面會有腳本檢測當前nginx服務器是否還活着,如果活着就進行訪問,如果宕機了就切換到備份服務器
在這裏插入圖片描述
2、配置高可用的準備工作
(1)需要兩個nginx服務器
(2)在兩臺服務器上安裝keepalived,可使用yum命令進行安裝
yum install keepalived -y

3、配置高可用

  1. 修改主服務器和備份服務器的keepalived.conf配置文件
#全局配置
global_defs {
   notification_email {  #指定keepalived在發生切換時需要發送email到的對象,一行一個
     [email protected]
   }
   notification_email_from [email protected]  #指定發件人
   #smtp_server XXX.smtp.com                             #指定smtp服務器地址
   #smtp_connect_timeout 30                               #指定smtp連接超時時間
   router_id LVS_DEVEL                                    #運行keepalived機器的一個標識
}
vrrp_script check_nginx {
    script "/usr/local/src/nginx_check.sh"         ##監控腳本,需要自己配置
    interval 2                                      ##檢測腳本執行的時間間隔,2秒
    weight 2                                        ##權重+2,腳本執行成功後,使備份服務器權重大於主服務器權重
}
vrrp_instance VI_1 {
    state MASTER           #標示狀態 主機爲爲MASTER 備份機爲BACKUP
    interface docker0         #設置實例綁定的網卡
    virtual_router_id 51   #同一實例下virtual_router_id必須相同
    priority 100           #優先級,MASTER權重要高於BACKUP 比如BACKUP爲99
    advert_int 1           #MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒
    authentication {       #設置認證
        auth_type PASS     #主從服務器驗證方式
        auth_pass 8888
    }
   track_script {
        check_nginx        #監控腳本
   }
    virtual_ipaddress {    #設置vip
        192.168.17.50       #可以多個虛擬IP,換行即可
    }

}
  1. 在/usr/local/src/下添加nginx_check.sh腳本
#!/bin/bash
A=`ps -C nginx -no-header |wc -l`
if [ $A -eq 0];then
	/usr/local/nginx/sbin/nginx # nginx的路徑
	sleep 2 
	if[`ps -c nginx  --no-header |wc -l` -eq 0];then
	killall keepalived
	fi
fi
  1. 把兩臺服務器上的nginx和keepalived啓動
    啓動nginx:./nginx
    啓動keepalived:systemctl start keepalived.service

  2. 最終測試
    (1)瀏覽器地址欄輸入虛擬ip地址 192.168.17.50 進行訪問
    (2)把主服務器的nginx和keepalived停止,再輸入虛擬ip地址 192.168.17.50 進行訪問
    停止keepalived:stop keepalived.service
    在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章