1. 程式人生 > >nginx簡單配置

nginx簡單配置

1、下載

下載地址為:http://nginx.org/en/download.html

這裡我們下載1.13.7版本,具體版本自己把握。(1.13之後支援websocket)

2、啟動

下載的壓縮包解壓之後如圖所示:

 

nginx解壓目錄

這裡conf資料夾裡面主要存放的一些配置檔案,logs資料夾裡面主要存放日誌檔案,剛開始主要使用這兩個資料夾裡面的東西。

可以看到一個可執行檔案nginx.exe。雙擊之後就能啟動nginx了。也可以使用命令start nginx啟動,重啟命令:nginx -s reload

nginx的預設埠是80,我們在瀏覽器視窗輸入localhost

檢視是否出現如下介面:

 

我這裡已經修改了埠為8080,所以訪問的是localhost8080

出現如上介面,則說明nginx已經啟動成功了。

3、簡單的負載均衡

這裡使用最簡單的啟動兩個tomcat來實現負載均衡。首先我們啟動兩個toncat,並且為了區分在主頁上做了一些修改,如下圖所示:

 

第一個tomcat,標註the first toncat

 

第二個tomcat,標註the second toncat


然後我們用編輯器開啟conf資料夾下的nginx.conf檔案

首先我們在http的上下文中配置一個upstream

 


#負載的server

upstream tomcat_server{

server 127.0.0.1:8081 ;

server 127.0.0.1:8082 ;

}


分別表示負載的兩個tomcat。然後在server的上下文中配置一個location

server {

         listen      80;

          location /tomcat/ {

                        proxy_passhttp://tomcat_server/;

          }

}

proxy_pass配置為上面upstream的名字。


這個時候我們訪問http://localhost/tomcat/,會發現交替出現兩個tomcat,說明負載均衡已經起作用。如下圖:

 

第一次訪問

 

第二次訪問


到此為止,一個最簡單的負載兩個tomcatdemo已經完成。

4、負載均衡的實現方式

4.1、輪詢(預設)

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

4.2、weight

指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的情況。

 

4.3、ip_hash

每個請求按訪問iphash結果分配,這樣每個訪客固定訪問一個後端伺服器,可以解決session的問題。

 

4.4、fair(第三方)

按後端伺服器的響應時間來分配請求,響應時間短的優先分配。

4.5、url_hash(第三方)

按訪問urlhash結果來分配請求,使同樣的url定向到同一個後端伺服器,後端伺服器為快取時比較有效

 

5、其他的一些配置

首先我們來看一個配置檔案:

max_fails=1 fail_timeout=600s表示失敗1次後就認為在之後的10分鐘中該server已經down掉;還可以配置backup,則設定該server為備份伺服器,當其他的serverdown的時候,才會訪問這臺伺服器。

接下里我們看一個完整的server上下文:

 

稍微完整的server上下文配置

上圖中的proxy_next_upstream這個配置表示為發生後面的錯誤後直接請求下一個sever(注意這裡讀請求的時候沒有問題,但可能在寫請求的時候容易出問題)這裡本來還有一個配置項timeout,如果配置了timeout一旦出現了超時,去訪問下一個server的,有多少個server就訪問多少次,這就回造成一直訪問失敗,超時。

在模擬一臺伺服器down的時候,迅速切換另一臺的時候,剛開始總是很慢,後來才發現是proxy_connect_timeout這個配置的問題,配置1秒則是連線1秒沒有響應就切換到另一臺服務,proxy_read_timeoutproxy_send_timeout則是連線成功後讀和寫的超時時間。

使用中還發現負載均衡時websocke無法連線,一直返回400錯誤。後來發現需要配置幾個配置項,在負載均衡中要使用websocket必須加配置才可以,就是如上圖中的三行配置。

6.session問題

使用負載均衡的時候會出現session不同步的問題,導致無法登陸等一系列操作。我們使用redis來儲存session

如何使用redis(windows環境下),把圖一中的三個配置檔案覆蓋到圖二的同名字的配置檔案,然後點選圖三的start.bat檔案啟動redis

                                                              圖一


                                                        圖二


                                                              圖三


然後在專案配置檔案中配置如下:


7、附上一份詳細的配置檔案(以下三張圖轉載自https://www.coderknock.com/blog/2016/04/28/nginx.conf.html