綠色資源(yuán)網(wǎng):您身邊最放心的(de)安(ān)全下載(zǎi)站! 最新軟件|熱門排行|軟件分類|軟(ruǎn)件專題(tí)|廠商大(dà)全

綠色資源網(wǎng)

技術教程
您的(de)位置:首頁服務器類(lèi)Linux服務(wù)器 → Linux係統(tǒng)上配置Nginx+Mongrel cluster

Linux係統上配置(zhì)Nginx+Mongrel cluster

我要評論 2009/05/04 17:00:03 來源:綠色資(zī)源網 編輯:korn [ ] 評論:0 點擊:1451次

Nginx不僅是一(yī)個小巧且高效的HTTP服務器,也(yě)可以做一個高效的負載均(jun1)衡反向代理,通過它(tā)接受用戶的請求並分(fèn)發到多個Mongrel進(jìn)程(chéng)可以極大提高(gāo)Rails應用(yòng)的(de)並發能力。下(xià)麵介紹一下如何(hé)在(zài)一台服務器(qì)上配置Nginx + Mongrel cluster。

獲(huò)得Nginx,這裏我們假設大(dà)家是(shì)通過(guò)自(zì)己編譯,並配置了(le)默認的(de)編譯的參(cān)數,此處使用的是Nginx 0.5.x版。

配置Mongrel cluster

我(wǒ)們還需要獲得Mongrel和其Cluster插件(用來方(fāng)便得啟動(dòng)多個Mongrel進程),如下(xià)通過gem進行安裝:

gem i -y mongrel mongrel_cluster

然後建立mongrel_cluster的(de)配置(zhì)文(wén)件。進入Rails應用即你的程序的根部目(mù)錄(以下假設(shè)/usr/rails),運行:

mongrel_rails cluster::configure

然(rán)後mongrel_cluster便會在config目錄下生(shēng)成一個mongrel_cluster.yml,內(nèi)容如下:

---

log_file: log/mongrel.log

port: 3000

pid_file: tmp/pids/mongrel.pid

servers: 2

我們可以通(tōng)過修改其(qí)中的(de)設置來更(gèng)改mongrel_cluster的(de)運行,這個(gè)範(fàn)例配置省略了(le)一些其他參數,具體的參數(shù)的含義如下:

address: 指定綁定的地址

port: 指定mongrel_cluster所運行(háng)的(de)mongrel進程從哪個(gè)端口開始綁定

servers: 指定同時運行多少個mongrel進程,結合port參數,就是(shì)表示port到(dào)port+servers-1(含)的端口將被使用

environment: 指定Rails運(yùn)行的(de)配置環境

user: 指定mongrel進程(chéng)以什麽用(yòng)戶的身份運行

group: 指定mongrel進程以(yǐ)什麽組的(de)身份運行

cwd: 指定mongrel運行的根目錄

log_file: 各(gè)個mongrel進程的輸出日誌的位置,相對於cwd的(de)目錄,會在文件的擴展名之前加上各進程對應的端口(kǒu)號

pid_file: 各個mongrel進程的pid文件的位置,相對於cwd的目錄,會在文件的擴展名之前加上各進程對應的(de)端口號(hào)

大家可以根據(jù)自己的具體情況進行修改。以下是一個完整的mongrel_cluster.yml配置文件:

---

user: apache

cwd: /usr/rails/

log_file: log/mongrel.log

port: 3000

environment: production

group: apache

address: 127.0.0.1

pid_file: tmp/pids/mongrel.pid

servers: 5

接下來便(biàn)可以啟動mongrel_cluster了,以下是控(kòng)製mongrel_cluster的命令:

mongrel_rails cluster::start #啟(qǐ)動

mongrel_rails cluster::restart #重啟(qǐ)

mongrel_rails cluster::stop #停止

配置Nginx負載均衡反向代理

利用nginx的upstream指令配置(zhì)哪些服務(wù)器需要進行負載均衡。在這裏也(yě)可以說直接說告訴nginx mongrel_cluster在(zài)哪些地址和端口上(shàng),按照上麵的(de)mongrel_cluster的(de)配置,在(zài)nginx中應該(gāi)這樣(yàng)寫:

...

http{

...

#upstream段要放在http段中

upstream mongrel {

server 127.0.0.1:3000;

server 127.0.0.1:3001;

server 127.0.0.1:3002;

server 127.0.0.1:3003;

server 127.0.0.1:3004;

}

...

}


upstream指令後麵的(de)mongrel指定(dìng)了這批(pī)上遊服務器的的名稱,大家可以使用別的名字。每個server指令指(zhǐ)定了(le)一(yī)個服務器,server指令還支(zhī)持(chí)別的參(cān)數可以設置重試次數和超時時(shí)間(jiān)以及不同服務器的權(quán)重。


接下來(lái)配(pèi)置nginx在接受(shòu)哪些http請(qǐng)求時轉發(fā)到mongrel cluster,因為nginx處(chù)理靜態文(wén)件(jiàn)的速度遠遠高於(yú)mongrel,所以一般當請求的(de)路(lù)徑不存在的時候才(cái)將請求(qiú)轉(zhuǎn)發(fā)到(dào)mongrel cluster:

server {

listen 80;

server_name example.com;

#設(shè)置服務器(qì)根目(mù)錄為rails應用的(de)public目錄,這個目錄下放了(le)對外的靜態(tài)文(wén)件

root /usr/rails/public;

index index.html index.htm;

locations / {

#轉(zhuǎn)發(fā)時保留原有請求(qiú)的IP信息和HOST信息(xī)

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header Host $http_host;

proxy_redirect false;

if (-f $request_filename/index.html) {

rewrite (.*) $1/index.html break;

}

if (-f $request_filename.html) {

rewrite (.*) $1.html break;

}

#當請求的(de)文件不存在,轉發到mongrel cluster

if (!-f $request_filename) {

proxy_pass http://mongrel;

break;

}

}

error_page 500 502 503 504 /50x.html;

locations = /50x.html {

root html;

}

}

然後重啟Nginx,配置(zhì)便成功了。

關鍵詞:Linux,Nginx,Mongrel,cluster

閱(yuè)讀本文(wén)後您(nín)有什麽感想? 已(yǐ)有 人給出評價!

  • 1 歡迎喜歡
  • 25 白(bái)癡
  • 2 拜托
  • 2 哇
  • 3 加油
  • 3 鄙視