nginx搭建及測試

Nginx介紹(可以把項目搭建到多個服務器上,並且可以操作單個的服務器啓動或者關閉。) Nginx ("engine x") 是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP服務器。Nginx是由Igor Sysoev爲俄羅斯訪問量第二的Rambler.ru站點開發的,第一個公開版本0.1.0發佈於2004年10月4日。其將源代碼以類BSD許可證的形式發佈,因它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名。2011年6月1日,nginx 1.0.4發佈。1.下載地址:http://nginx.org/en/download.html
下載pgp格式的最新版本就可以,我測試的是nginx-1.13.4版本。
2.解壓,直接運行nginx.exe,然後在瀏覽器url地址輸入127.0.0.1,出現以下頁面,說明虛擬主機已經搭建好了。
3.Nginx的配置文件都存於目錄conf文件下,其中nginx.conf是它的主配置文件。(紅色爲新增部分)
listen:表示當前的代理服務器監聽的端口,默認的是監聽80端口。注意,如果我們配置了多個server,這個listen要配置不一樣,不然就不能確定轉到哪裏去了。
server_name:表示監聽到之後需要轉到哪裏去,這時我們直接轉到本地,這時是直接到nginx文件夾內。
location:表示匹配的路徑,這時配置了/表示所有請求都被匹配到這裏
root:裏面配置了root這時表示當匹配這個請求的路徑時,將會在這個文件夾內尋找相應的文件,這裏對我們之後的靜態文件伺服很有用。
index:當沒有指定主頁時,默認會選擇這個指定的文件,它可以有多個,並按順序來加載,如果第一個不存在,則找第二個,依此類推。
在nginx.conf文件中找到下列代碼,添加紅色代碼;
location / {
root html;
index index.html index.htm;
proxy_pass http://localhost:8080;
}
下一步,cmd進入nginx目錄中,輸入nginx -s reload 刷新以下,在瀏覽器輸入http://localhost如果訪問到tomcat頁面,這只是一個簡單的測試例子,讓nginx進行轉發,即所 謂的反向代理。但實際上我們的需求不會是這樣的,我們需要分文件類型來進行過濾,比如jsp直接給tomcat處理,因爲nginx並不是servlet 容器,沒辦法處理JSP,而html,js,css這些不需要處理的,直接給nginx進行緩存。

下面我們來進行一下配置,讓JSP頁面直接給tomcat,而html,png等一些圖片和JS等直接給nginx進行緩存。
這時最主要用的還是location這個元素,並且涉及到一部分正則,但不難:

#tomcat的jsp頁面交給tomcat處理
#location ~ \.jsp$ {
# #proxy_pass http://local_tomcat;
#}


#HTML、img、js交給nginx處理
#location ~ \.(html|js|css|png|jpg|gif)$ {
# #root D:\Tomcat\apache-tomcat-7.0.72\webapps\ROOT;
#}
去掉上面的代碼,寫上以下代碼:

    upstream local_tomcat {  
        server localhost:8080 weight=1; 設置權重 (也可以省略不寫的)
    server localhost:8090 weight=5;
    }  
      
    server{  
            location / {  
               proxy_pass http://local_tomcat;  
            }  
            #......其他省略  
    }


五種權重分配方式
1、輪詢(默認)

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

2、weight
指定輪詢機率,weight和訪問比率成正比,用於後端服務器性能不均的情況。
例如:
upstream backend {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}

3、ip_hash
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個後端服務器,可以解決session的問題。
例如:
upstream backend {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}

4、fair(第三方)
按後端服務器的響應時間來分配請求,響應時間短的優先分配。
upstream backend {
server server1.linuxany.com;
server server2.linuxany.com;
fair;
}

5、url_hash(第三方)
按訪問url的hash結果來分配請求,使每個url定向到同一個後端服務器,後端服務器爲緩存時比較有效。

例:在upstream中加入hash語句,server語句中不能寫入weight等其他的參數,hash_method是使用的hash算法
複製代碼 代碼如下:

upstream backend {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
#定義負載均衡設備的Ip及設備狀態
upstream backend{
ip_hash;
server 127.0.0.1:9090 down;
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup;
}

在需要使用負載均衡的server中增加
proxy_pass http://bakend/;

每個設備的狀態設置爲:
1.down 表示單前的server暫時不參與負載
2.weight 默認爲1.weight越大,負載的權重就越大。
3.max_fails :允許請求失敗的次數默認爲1.當超過最大次數時,返回proxy_next_upstream 模塊定義的錯誤
4.fail_timeout: max_fails次失敗後,暫停的時間。
5.backup: 其它所有的非backup機器down或者忙的時候,請求backup機器。所以這臺機器壓力會最輕。

nginx支持同時設置多組的負載均衡,用來給不用的server來使用。

client_body_in_file_only 設置爲On 可以講client post過來的數據記錄到文件中用來做debug
client_body_temp_path 設置記錄文件的目錄 可以設置最多3層目錄

location 對URL進行匹配.可以進行重定向或者進行新的代理 負載均衡

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