日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Linux系統(tǒng)上配置Nginx+Mongrel cluster

Nginx不僅是一個小巧且高效的HTTP服務(wù)器,也可以做一個高效的負(fù)載均衡反向代理,通過它接受用戶的請求并分發(fā)到多個Mongrel進程可以極大提高Rails應(yīng)用的并發(fā)能力 。下面介紹一下如何在一臺服務(wù)器上配置NginxMongrel cluster 。獲得Nginx,這里我們假設(shè)大家是通過自己編譯,并配置了默認(rèn)的編譯的參數(shù),此處使用的是Nginx 0.5.x版 。配置Mongrel cluster 我們還需要獲得Mongrel和其Cluster插件(用來方便得啟動多個Mongrel進程),如下通過gem進行安裝: gem i -y mongrel mongrel_cluster 然后建立mongrel_cluster的配置文件 。進入Rails應(yīng)用即你的程序的根部目錄(以下假設(shè)/usr/rails),運行: mongrel_rails cluster::configure 然后mongrel_cluster便會在config目錄下生成一個mongrel_cluster.yml,內(nèi)容如下: --- log_file: log/mongrel.log port: 3000 pid_file: tmp/pids/mongrel.pid servers: 2 我們可以通過修改其中的設(shè)置來更改mongrel_cluster的運行,這個范例配置省略了一些其他參數(shù),具體的參數(shù)的含義如下: address: 指定綁定的地址 port: 指定mongrel_cluster所運行的mongrel進程從哪個端口開始綁定 servers: 指定同時運行多少個mongrel進程,結(jié)合port參數(shù),就是表示port到port servers-1(含)的端口將被使用 environment: 指定Rails運行的配置環(huán)境 user: 指定mongrel進程以什么用戶的身份運行 group: 指定mongrel進程以什么組的身份運行 cwd: 指定mongrel運行的根目錄 log_file: 各個mongrel進程的輸出日志的位置,相對于cwd的目錄,會在文件的擴展名之前加上各進程對應(yīng)的端口號 pid_file: 各個mongrel進程的pid文件的位置,相對于cwd的目錄,會在文件的擴展名之前加上各進程對應(yīng)的端口號 大家可以根據(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 接下來便可以啟動mongrel_cluster了,以下是控制mongrel_cluster的命令: mongrel_rails cluster::start #啟動 mongrel_rails cluster::restart #重啟 mongrel_rails cluster::stop #停止 配置Nginx負(fù)載均衡反向代理 利用nginx的upstream指令配置哪些服務(wù)器需要進行負(fù)載均衡 。在這里也可以說直接說告訴nginx mongrel_cluster在哪些地址和端口上,按照上面的mongrel_cluster的配置,在nginx中應(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指令后面的mongrel指定了這批上游服務(wù)器的的名稱,大家可以使用別的名字 。每個server指令指定了一個服務(wù)器,server指令還支持別的參數(shù)可以設(shè)置重試次數(shù)和超時時間以及不同服務(wù)器的權(quán)重 。接下來配置nginx在接受哪些http請求時轉(zhuǎn)發(fā)到mongrel cluster,因為nginx處理靜態(tài)文件的速度遠(yuǎn)遠(yuǎn)高于mongrel,所以一般當(dāng)請求的路徑不存在的時候才將請求轉(zhuǎn)發(fā)到mongrel cluster: server { listen 80; server_name example.com; #設(shè)置服務(wù)器根目錄為rails應(yīng)用的public目錄,這個目錄下放了對外的靜態(tài)文件 root /usr/rails/public; index index.html index.htm; location / { #轉(zhuǎn)發(fā)時保留原有請求的IP信息和HOST信息 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; } #當(dāng)請求的文件不存在,轉(zhuǎn)發(fā)到mongrel cluster if (!-f $request_filename) { proxy_pass http://mongrel; break; } } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } 然后重啟Nginx,配置便成功了 。

    推薦閱讀