公司要提供面向全行業用戶的數據查詢服務。全部數據來自另外一個系統(交換共享平臺,以相關查詢接口方式提供),咱們自建後臺服務作中轉,經過調用交換共享平臺的接口獲取數據,爲前端的APP、PC版系統等提供數據。考慮到用戶併發訪問對後臺服務所在應用服務器的壓力問題(暫不考慮對交換共享平臺的壓力,實際這裏的壓力更大),準備經過nginx進行負載均衡。先期考慮使用2臺webserver,分別部署後臺服務分散壓力。本文對nginx的安裝部署等設置進行記錄。html
一、首先了解一下nignx是幹嗎的:經常使用nginx作這2件事:反向代理、負載均衡。應該還有動靜資源分離、正向代理之類的,暫時不表。前端
a、反向代理:就是以代理服務器來接受internet上的鏈接請求,而後將請求轉發給內部網絡上的服務器,並將從服務器上獲得的結果返回給internet上請求鏈接的客戶端,此時代理服務器對外就表現爲一個反向代理服務器。就白了就是當內網的服務器不能被直接訪問時,咱們能夠在外網服務器架設nginx做爲代理(要求nginx所在的外網服務器得可以訪問到內網服務器)。nginx
b、負載均衡:把訪問nginx的請求,根據配置隨機分配到不一樣的真實服務器上,達到負載均衡的目的。說白了就是外部請求統一訪問nginx,nginx會把壓力分散到各個服務器上,避免只請求一臺服務器把服務器拖死。看到這我想你們應該會想到這種隨機分配機制應該會有session的問題,一會訪問A服務器一會訪問B服務器的,session不亂了麼?固然nginx有本身的應對策略了,這裏先不表。web
二、安裝部署redis
a、從官網下載:http://nginx.org/en/download.html ,建議選擇穩定版吧,那個mainline version就至關因而開發版。瀏覽器
b、下載完了就是個不大的zip包,直接解壓到某個文件夾下就能用了,簡單吧。服務器
c、cmd下到該目錄,運行nginx。網絡
報1113錯誤,恭喜你,nginx目錄文件夾有中文,不支持。換個全英文的目錄再試試吧。session
沒錯誤了,去瀏覽器裏看看。這就好了。若是還有錯多半是端口的問題,默認配置是80端口,得在\nginx-1.16.1\conf目錄下改一下nginx.conf文件。個人是改爲8080端口了,由於iis默認佔用80端口。併發
三、負載均衡配置
a、打開nginx.conf文件,在server配置節以前加入upstream配置節,該配置表示會把訪問localhost:8080的請求,隨機轉發到localhost:1111與localhost:2222下,隨機權重由weight指定(值越高,表示被訪問到的概率越高)。這裏爲了測試,使用本機的不一樣端口,實際能夠改成正式的服務地址。proxy_pass別忘了跟upstream對應好。
b、在iis服務器上部署兩個網站,一個用1111端口,一個用2222端口。默認頁面分別顯示「I am server 1111」、「I am server 2222」。
c、從新加載nginx配置,使得咱們的配置生效:
d、到瀏覽器裏訪問一下「http://loclahost:8080」,你會發現訪問被隨機轉發到1111或2222服務器上了。刷一下,頁面就在1111與2222之間變化。OK,成功了。
e、最前面不是說過session的問題麼?nginx提供了一種簡單的基於請求端ip地址的分配機制:即保證來自同一個ip地址的請求,每次都會分配到固定的服務器上去。例如,假設第一次請求被分配到1111服務器,則下次請求仍是會訪問1111服務器,不會訪問2222服務器,這樣session就不會亂了。配置很簡單,加入ip_hash配置項便可:
f、咱們讓nginx從新加載配置,再刷新http://localhost:8080/,發現無論怎麼刷新頁面,都是顯示「I am server 1111」,說明策略生效了。固然,網上還有使用redis配合實現session共享的方案,可自行百度。