天天看點

Nginx筆記(二)

Nginx配置簡介

    • nginx配置檔案
    • 反向代理(配置)
    • nginx負載均衡
    • nginx負載配置設定政策
    • nginx動靜結合
    • nginx高可用配置

nginx配置檔案

  1. 配置檔案位置

    /usr/local/nginx/conf/nginx.conf

  2. 配置檔案組成

    nginx配置檔案有三部分組成:

    第一部分:全局塊,主要設定一些影響nginx伺服器整體運作的配置指令。如:worker_processes 1 表示支援并發處理量。

    第二部分:events塊,主要影響nginx伺服器與使用者的網絡連接配接。worker_connections 1024 最大連接配接數。

    第三部分:http塊,其中包含http全局塊和server塊。

反向代理(配置)

  1. 實作效果
    • 借助nginx轉發,根據不同的路徑跳轉到不同端口的伺服器中
    • nginx監聽端口9001
    • 通路http://127.0.0.1:9001/edu/ 直接跳轉到127.0.0.1:8081
    • 通路http://127.0.0.1:9001/vod/ 直接跳轉到127.0.0.1:8082
  2. 準備工作
    • 準備兩個Tomcat伺服器,端口号分别為8080,8081
    • 建立兩個伺服器對應的測試頁面。(建議使用SpringBoot封裝jar包)
  3. nginx.conf配置
    vi /usr/local/nginx/conf/nginx.conf
               
Nginx筆記(二)
  1. 最終測試

    最終測試,在浏覽器中打開 http://127.0.0.1:9001/edu/和http://127.0.0.1:9001/vod/,看看跳轉是否正确。

  2. location指令補充
    location [ = | ~ | ~* | ^~] url {
    	proxy_pass .....
    }
               
    • =:用于不含正規表達式的uri前,要求請求字元串與uri嚴格比對,如果比對成功,就停止繼續向下搜尋并立即處理該請求
    • ~:用于表示uri包含正規表達式,并且區分大小寫
    • ~*:用于表示uri包含正規表達式,并且不區分大小寫
    • ^~:用于不含正規表達式的uri前,要求Nginx伺服器找到辨別uri和請求字,符串比對度最高的location後,立即使用此location處理請求,而不再使用location,塊中的正則uri和請求字元串做比對
    • 注意:如果uri包含正規表達式,則必須要有“~”或者“~*”辨別

nginx負載均衡

  1. 實作效果

    在浏覽器中輸入位址:http://192.168.xxx.xxx/edu/index.html ,通路此位址時實作負載均衡效果,平均到8080和8081端口

  2. 準備工作
    • 準備兩台tomcat伺服器,一 台8080, 一台8081
    • 在兩台tomcat裡面webapps目錄中,建立同一個名稱是edu檔案夾,并在edu檔案夾中建立不同的頁面index.html,用于測試
  3. 在nginx.conf配置檔案中配置
Nginx筆記(二)
  1. 測試

    http://192.168.xxx.xxx/edu/index.html 在浏覽器中輸入同一個網址,就會出現頁面内容中兩個頁面的互動效果。

nginx負載配置設定政策

  • 輪詢(預設)

    每個請求按時間順序逐一配置設定到不同的後端伺服器,如果後端伺服器down掉,能自動剔除

  • weight

    weight代表權重預設為1,權重越高被配置設定的用戶端越多。指定輪詢幾率,weight和通路比率成正比,用于後端伺服器性能不均的情況

    upstream myserver {
    	server 127.0.0.1:8080 weight=5;
    	server 127.0.0.1:8081 weight=10;
    }
               
  • ip hash

    每個請求按通路ip的hash結果配置設定,這樣每個訪客固定通路一個後端伺服器,可以解訣session的問題。就是一個IP對應一個後端伺服器,第一次是哪個伺服器就是哪個伺服器不能變。

    upstream myserver {
    	ip_hash
    	server 127.0.0.1:8080;
    	server 127.0.0.1:8081;
    }
               
  • fair(第三方)

    按後端伺服器的響應時間來配置設定請求,響應時間短的優先配置設定

    upstream server_pool 
    	server 192.168.5.21:80;
    	server 192.168.5.22:80;
    	fair;
    }
               

nginx動靜結合

  1. nginx動靜分離就是将動态請求和靜态請求分開,使用nginx處理靜态頁面,Tomcat處理動态頁面
Nginx筆記(二)

其中,通過location指定不同的字尾名實作不同的請求轉發。通過expires參數設定浏覽器緩存的過期時間,也就是說無需去服務端驗證,直接通過浏覽器自身确認是否過期即可,是以不會産生額外的流量。此種方法非常适合不經常變動的資源。如果設定3d, 表示在這3天之内通路這個URL,發送一個請求,對比伺服器該檔案最後更新時間沒有變化,則不會從伺服器抓取,傳回狀态碼304,如果有修改,則直接從伺服器重新下載下傳,傳回狀态碼200。

2.準備工作

在Linux中準備靜态資源,用于進行通路。

/data/image 圖檔檔案夾

/data/www 靜态頁面檔案夾(HTML檔案夾)

3.nginx.conf配置檔案中配置

Nginx筆記(二)

4.測試

在浏覽器中輸入http://192.168.1.112/www/index.html和http://192.168.1.112/image/1.jpg進行通路靜态資源。

nginx高可用配置

1.高可用簡介

為什麼要使用高可用?

Nginx筆記(二)

就上圖中當nginx當機時,就無法實作消息轉發,為了解決這樣的問題,就會用到多态nginx伺服器。

Nginx筆記(二)

2.配置高可用的準備工作

(1) 需要兩台伺服器192.168.17.129 和192.168.17.1314

(2) 在兩台伺服器安裝nginx.

(3) 在兩合伺服器安裝keepalived.

3.在兩台伺服器安裝keepalived

使用yum指令進行安裝

yum install keepalived

rpm -q -a keepalived    #檢視是否已經安裝上
           

預設安裝路徑: /etc/keepalived 。安裝之後,在etc裡面生成目錄keepalived, 有配置檔案keepalived.conf

4.完成高可用配置(主從配置)

  • 修改keepalived的配置檔案

    keepalived.conf

    為:
    global_defs {
    	notification_email {
    	  [email protected]
    	  [email protected]
    	  [email protected]
    	}
    	notification_email_from [email protected]
    	smtp_ server 192.168.17.129
    	smtp_connect_timeout 30
    	router_id LVS_DEVEL	# LVS_DEVEL這字段在/etc/hosts檔案中看;通過它通路到主機
    }
    
    vrrp_script chk_http_ port {
    	script "/usr/local/src/nginx_check.sh"
    	interval 2   # (檢測腳本執行的間隔)2s
    	weight 2  #權重,如果這個腳本檢測為真,伺服器權重+2
    }
    
    vrrp_instance VI_1 {
    	state BACKUP   # 備份伺服器上将MASTER 改為BACKUP
    	interface ens33 //網卡名稱
    	virtual_router_id 51 # 主、備機的virtual_router_id必須相同
    	priority 100   #主、備機取不同的優先級,主機值較大,備份機值較小
    	advert_int 1	#每隔1s發送一次心跳
    	authentication {	# 校驗方式, 類型是密碼,密碼1111
            auth type PASS
            auth pass 1111
        }
    	virtual_ipaddress { # 虛拟ip
    		192.168.17.50 // VRRP H虛拟ip位址
    	}
    }
               
  • 在路徑/usr/local/src/ 下建立檢測腳本 nginx_check.sh
    #! /bin/bash
    A=`ps -C nginx -no-header | wc - 1`
    if [ $A -eq 0];then
    	/usr/local/nginx/sbin/nginx
    	sleep 2
    	if [`ps -C nginx --no-header| wc -1` -eq 0 ];then
    		killall keepalived
    	fi
    fi
               
  • 把兩台伺服器上nginx和keepalived啟動
    systemctl start keepalived.service		#keepalived啟動
    ps -ef I grep keepalived		#檢視keepalived是否啟動
               

5.測試

  • 在浏覽器位址欄輸入虛拟ip位址192.168.17.50
  • 把主伺服器(192.168.17.129) nginx和keealived停止,再輸入192.168.17.50.
    systemctl stop keepalived.service  #keepalived停止
               

繼續閱讀