nginx 負載平衡與location應用分析

來源:互聯網
上載者:User
目前正在學習nginx伺服器的相關知識。以下是我的學習記錄。

文章重點記錄nginx負載平衡

為了實驗,我習慣性的先上拓撲圖,如下:

我們的案例需求如下,前端nginx做負載平衡,並處理靜態頁面,使用location查詢過濾將動態網頁面交由後端apache伺服器叢集做處理。並由nginx回顯內容輸出。

nginx負載平衡伺服器安裝配置:

 
  1. [root@lvs /]# rpm -qa | grep pcre
  2. pcre-devel-6.6-2.el5_1.7
  3. pcre-6.6-2.el5_1.7
  4. # pcre的作用是為nginx提供相容perl的正則運算式,使nginx支援HTTP Rewrite模組.
  5. [root@lvs ~]# wget http://nginx.org/download/nginx-0.8.53.tar.gz
  6. [root@lvs nginx-0.8.53]# ./configure --with-http_stub_status_module
  7. [root@lvs nginx-0.8.53]# make && make install
  8. # --with-http_stub_status_module 可以用來啟用nginx的nginxStatus功能,以監控
  9. nginx目前狀態。

在繼續配置之前,需要先瞭解我們要做什麼。我只想做個基本的實驗來看下nginx的負載平衡是如何工作的,所以我的實驗設計是這樣的。

當我們訪問192.168.182.131/index.html 時,由於是靜態頁面,交給nginx本身處理,如果我們訪問 192.168.182.131/test.php時,配置location匹配 .php 尾碼,並交由後端apache叢集來處理,至於叢集會以什麼樣的方式來處理,後面用到時再說。

 
  1. [root@lvs conf]# pwd
  2. /usr/local/nginx/conf
  3. [root@lvs conf]# vim nginx.conf
  4. user nobody;
  5. worker_processes 1;
  6. # 指定nginx要開啟的進程數,建議一個CPU的核心就處理一個進程,所以如果是4核CPU,就指定4個進程數。
  7. events {
  8. use epoll;
  9. worker_connections 1024;
  10. }
  11. # use epoll 是指nginx的工作模式,epoll是比較高效的工作模式,對於 #linux/unix平台,
  12. epoll是首選模式。# worker_connections 是一個進程的最大串連數。由此即可算出最大的客
  13. 戶端數量:max_client = worker_processes * worker_connections;
  14. http {
  15. server {
  16. listen 80;
  17. server_name 192.168.182.131;
  18. index index.html;
  19. root /usr/local/nginx/html;
  20. charset gb2312;
  21. upstream MyServer {
  22. ip_hash;
  23. server 192.168.182.132:80;
  24. server 192.168.182.133:80;
  25. }
  26. location ~* .*.php$ {
  27. proxy_pass http://MyServer;
  28. }
  29. }
  30. }

負載平衡的配置是這裡:

       
  1.     upstream MyServer {
  2.    

  3.             ip_hash;
  4.    

  5.             server 192.168.182.132:80;
  6.    

  7.             server 192.168.182.133:80;
  8.    

  9.          }  

這裡有個地方需要注意,ip_hash是什麼呢?上面我說的要求我們再看一次:當我們訪問192.168.182.131/index.html 時,由於是靜態頁面,交給nginx本身處理,如果我們訪問 192.168.182.131/test.php時,配置location匹配 .php 尾碼,並交由後端apache叢集來處理,至於叢集會以什麼樣的方式來處理,後面用到時再說。

 
  1. ip_hash就是upstream的調度演算法之一,以下列舉nginx所支援的常用的3種調度演算法:
  2. ip_hash: 每個請求按訪問IP的hash結果分配,這樣來自同一個IP的訪客固定訪問一個後端伺服器,有效解決了動態網頁存在的session共用問題。
  3. 輪詢: 每個請求按訪問順序分配不同的後端伺服器,如果後端某台伺服器宕機,故障系統被自動剔除,使使用者訪問不受影響 。
  4. weight: 指定輪詢權值,weight值越大,分配到的訪問機率越高,主要用於後端每個伺服器效能不均的情況下。

而location的應用,案例中只舉了很簡單的用法:

       
  1.   location ~* .*.php$ {
  2.    

  3.              proxy_pass          http://MyServer;
  4.    

  5.      } 
 
  1. 首先應用瞭解location的幾個匹配符:
  2. 1 = 嚴格匹配這個查詢。如果找到,停止搜尋
  3. 2 ^~ 匹配路徑的首碼,如果找到,停止搜尋
  4. 3 ~ 為區分大小寫正則匹配
  5. 4 ~* 不區分大小寫正則匹配
  6. 所以,代碼中
  7. location ~* .*.php$ 的意思就是,將.php結尾的url連結,發送到http://MyServer
  8. 後端伺服器去處理,讓後端去處理。
  9. 關於location的更深入理解可以看這篇文章: http://blog.csdn.net/fengmo_q/article/details/6683377

配置後端apache叢集伺服器:

 
  1. 192.168.182.132 的配置如下:
  2. [root@lvs3 ~]# yum install httpd -y

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.