1. 程式人生 > >Nginx讀寫分離

Nginx讀寫分離

場景還原:

需求分析,前端一臺nginx做負載均衡反向代理,後面兩臺httpd伺服器。整個架構是提供BBS(論壇)服務,有一需求得實現讀寫分離,就是上傳附件的功能,我們上傳的附件只能上傳到Web1,然後在Web1上利用rsync+inotify實現附件同步,大家都知道rsync+inotify只能是主向從同步,不能雙向同步。所以Web1可進行寫操作,而Web2只能進行讀操作,這就帶來讀寫分離的需求,下面我們就來說一下,讀寫分離怎麼實現。

**原理:**根據傳送的請求型別,進行相應的動態分發

    if ($request_method = "PUT"){}

實現步驟

配置nginx.conf檔案

location / {
	if ($request_method = "PUT"){
		proxy_pass http://172.16.1.251:8099;
	}
		proxy_pass http://localhost:8080;
	
}

  1. 重啟服務

    nginx -s reload
    

在這裡插入圖片描述

  1. 傳送請求檢視效果

    我這裡只有一臺伺服器,proxy_pass http://172.16.1.251:8099;這個地址是錯的,指向不到任何地方,這裡就拿來測試

    正常情況:

在這裡插入圖片描述

在這裡插入圖片描述

錯誤情況:

1539682871575在這裡插入圖片描述

在這裡插入圖片描述

至此:所謂讀取操作全部在服務A進行,寫操作全部在服務B進行,以達到讀寫分離的效果.